53

当我这样做时,pip freeze我会得到我明确安装的包以及那些依赖于这些包的包。

例如:

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

好的,但后来我将这个 requirements.txt 安装在另一个环境中,pip install我会得到相同的结果,最后两行被删除。

所以我的问题是:我怎样才能创建最简化的 requirements.txt,其中所有可计算的依赖项都没有显示?

4

4 回答 4

97

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

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

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

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

于 2016-10-16T19:40:20.650 回答
11

没有办法用 pip 创建“最简化的 requirements.txt”——我不知道在这种情况下你是否需要它。

最好在 requirements.txt 中包含所有包,因为您可以确定哪些依赖项版本适用于您的环境。

想想 paramiko 得到更新,并打破向后兼容性:你会遇到问题。

于 2011-05-05T21:23:58.483 回答
3

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.
于 2021-01-21T03:29:38.760 回答
2

我认为删除版本的简单方法是-d"=" -f1在 run 之后被剪切pip freeze

pip3 freeze | cut -d"=" -f1 
于 2021-08-30T04:36:02.940 回答