当我pip freeze
时,我得到了我明确安装的软件包以及那些软件包依赖的软件包。
例如:
$ pip install fabric
...
$ pip freeze
Fabric==1.0.1
paramiko==1.7.6
pycrypto==2.3
好的,但后来我又在pip install
的另一个环境中安装了这个requirements.txt。我删除了最后两行的结果。
所以我的问题是:如何创建最简化的requirements.txt,其中所有可计算的依赖关系都没有显示?
答案 0 :(得分:17)
现在有(免责声明:我做到了。)
您只需从PyPI安装pip-chill
并从Python环境运行pip-chill
。
如果您喜欢冒险并且不想固定版本(或想要使用pip-compile),您可以使用pip-chill --no-version
,它将为您提供当前环境的最低要求。
答案 1 :(得分:12)
没有办法用pip创建“最简化的requirements.txt” - 我不知道在这种情况下你是否需要它。
最好在requirements.txt中包含所有包,因为您确定哪些依赖版本适用于您的环境。
考虑一下paramiko的更新,并打破向后兼容性:你会遇到问题。
答案 2 :(得分:2)
pipdeptree 是另一种选择。
它会像这样生成完整的 requirements.txt(带有 pipdeptree -f
):
jupyter==1.0.0
ipykernel==5.4.3
ipython==7.19.0
backcall==0.2.0
decorator==4.4.2
jedi==0.17.2
parso==0.7.1
这个文件有两个目的:
pip install
;pip-chill
一起用作开发人员友好的软件包列表(如由 grep '^\w' requirements.txt
创建的软件包列表)。