自 2022 年中期以来,现在可以取消setup.py
,setup.cfg
转而使用pyproject.toml
. 可编辑安装适用于最新版本的 setuptools 和 pip,甚至官方打包教程setup.py
也从pyproject.toml
.
然而,有关的文档requirements.txt
似乎也已被删除,我想知道现在将固定的需求放在哪里?
回顾一下:过去的常见做法是放置依赖项(没有版本固定),以setup.py
避免当此包与需要相同依赖项但版本要求冲突的其他包一起安装时出现问题。对于打包库来说, asetup.py
通常就足够了。
对于部署(即非库),您通常还提供requirements.txt
版本固定的依赖项。因此,您不会意外地获得该包经过测试的最新、最好的依赖项版本。
所以我的问题是,有什么改变吗?requirements.txt
当与 一起使用时,您仍然将固定的需求放在其中吗pyproject.toml
?或者有一个额外的部分pyproject.toml
吗?某处有相关文档吗?
开发一个Django Web应用程序,我有一个我需要在virtualenv中安装的软件包列表.说:
Django==1.3.1
--extra-index-url=http://dist.pinaxproject.com/dev/
Pinax==0.9b1.dev10
git+git://github.com/pinax/pinax-theme-bootstrap.git@cff4f5bbe9f87f0c67ee9ada9aa8ae82978f9890
# and other packages
Run Code Online (Sandbox Code Playgroud)
最初我在开发过程中一个接一个地手动安装它们.这安装了所需的依赖项,我最终pip freeze
在部署应用程序之前使用了它.
问题是,当我升级一些软件包时,一些依赖项不再使用也不需要,但它们仍然被列出pip freeze
.
现在,我想以这种方式建立一个新的virtualenv:
manual-requirements.txt
pip install -r manual-requirement.txt
(←问题,这不会安装依赖项)pip freeze -r manual-requirements.txt > full-requirements.txt
没有手动在新的virtualenv中重新安装软件包来获取它们的依赖关系的任何方法吗?这很容易出错,我希望自动化从不再需要的旧依赖项中清除virtualenv的过程.
编辑:实际上,pip 会安装未在需求文件中明确列出的依赖项,即使文档告诉我们这些文件是扁平的.关于我希望安装哪些依赖项我错了.我会让这个问题让任何人对pip没有安装所有依赖项有疑问.
在requirements.txt
我正在使用的Python库中,其中一个要求指定如下:
mock-django~=0.6.10
Run Code Online (Sandbox Code Playgroud)
什么~=
意思?
有没有简单的方法可以从需求文件中删除不再使用的包?
我为此任务编写了一个bash脚本,但是它没有按照我的预期工作.因为,某些包不遵循其PyPI项目名称.例如;
dj-database-url
Run Code Online (Sandbox Code Playgroud)
包用作
dj_database_url
Run Code Online (Sandbox Code Playgroud)
我的项目在自己的需求文件中有许多包,因此,逐个搜索它们太杂乱,容易出错并且需要花费太多时间.在我搜索时,IDE还没有这个属性.
我正在开发一个 python 包。我pip freeze > requirements.txt
用来将所需的包添加到requirements.txt 文件中。但是,我意识到一些包,而不是包版本,在它们前面有一些路径。
numpy==1.19.0
packaging==20.4
pandas @ file:///opt/concourse/worker/volumes/live/38d1301c-8fa9-4d2f-662e-34dddf33b183/volume/pandas_1592841668171/work
pandocfilters==1.4.2
Run Code Online (Sandbox Code Playgroud)
而在环境内部,我得到:
>>> pandas.__version__
'1.0.5'
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?
我需要用于python 2.6的unittest2和importlib,这是travis测试的其他python版本所不需要的.
有没有办法告诉Travis-CI每个python版本都有不同的requirements.txt文件?
是否有类似requirements.txt
Python 的功能,您可以在其中存储用于文件的包列表,并且每当其他人想要运行您的程序并且需要安装依赖项时,他们就可以这样做pip install -r requirements.txt
.
我认为,在将R脚本部署到生产环境中时,这会有很大帮助.如果没有这样的功能,我该如何复制它?
当我这样做时,pip freeze
我得到了我明确安装的软件包以及那些软件包依赖的软件包.
例如:
$ pip install fabric
...
$ pip freeze
Fabric==1.0.1
paramiko==1.7.6
pycrypto==2.3
Run Code Online (Sandbox Code Playgroud)
好的,但后来我又在另一个环境中安装了这个requirements.txt,pip install
我得到了相同的结果,删除了最后两行.
所以我的问题是:如何创建最简化的requirements.txt,其中所有可计算的依赖关系都没有显示?
我有一个requirements.txt
文件,其中包含我的虚拟环境所需的软件包列表.是否可以找出文件中提到的所有包是否存在.如果缺少某些软件包,如何找出丢失的软件包?
我正在尝试使用requirements.txt 安装BitTornado for Python 2.7,我收到以下错误:
Collecting requirements.txt
Could not find a version that satisfies the requirement requirements.txt (from versions: )
No matching distribution found for requirements.txt
Run Code Online (Sandbox Code Playgroud)
这是我在requirements.txt中的代码:
-e git+https://github.com/effigies/BitTornado.git#egg=python2.7
Run Code Online (Sandbox Code Playgroud)
我也试过-e git + https://github.com/effigies/BitTornado.git@python2.7但仍然无法正常工作.有人知道为什么会这样吗?
注意:"python2.7"是分支名称
提前致谢
requirements.txt ×10
python ×9
pip ×7
path ×1
pycharm ×1
python-2.7 ×1
r ×1
refactoring ×1
travis-ci ×1