pip冻结没有已安装包的依赖关系

时间:2011-05-05 15:19:55

标签: python pip requirements.txt

当我pip freeze时,我得到了我明确安装的软件包以及那些软件包依赖的软件包。

例如:

$ pip install fabric
...
$ pip freeze
Fabric==1.0.1
paramiko==1.7.6
pycrypto==2.3

好的,但后来我又在pip install的另一个环境中安装了这个requirements.txt。我删除了最后两行的结果。

所以我的问题是:如何创建最简化的requirements.txt,其中所有可计算的依赖关系都没有显示?

3 个答案:

答案 0 :(得分:17)

现在有(免责声明:我做到了。)

您只需从PyPI安装pip-chill并从Python环境运行pip-chill

如果您喜欢冒险并且不想固定版本(或想要使用pip-compile),您可以使用pip-chill --no-version,它将为您提供当前环境的最低要求。

https://github.com/rbanffy/pip-chill

答案 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

这个文件有两个目的:

  • 用作传统的requirements.txt 提供给pip install
  • 仅与 pip-chill 一起用作开发人员友好的软件包列表(如由 grep '^\w' requirements.txt 创建的软件包列表)。