不包含已安装包依赖的pip freeze

71 投票
4 回答
37078 浏览
提问于 2025-04-16 17:03

当我运行 pip freeze 时,我会看到我明确安装的包,还有那些作为依赖的包。

举个例子:

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

好的,没问题,但当我在另一个环境中用 pip install 安装这个 requirements.txt 时,最后两行会被去掉,结果是一样的。

所以我的问题是:我怎么才能创建一个最简化的 requirements.txt,让所有可以计算的依赖都不显示呢?

4 个回答

7

我觉得简单的方法来去掉版本号,就是在运行 pip freeze 之后,使用 -d"=" -f1 这个命令。

pip3 freeze | cut -d"=" -f1 
12

用pip创建“最简化的requirements.txt”是没办法做到的,我也不确定在这种情况下你是否真的需要它。

所有的包都写在requirements.txt里是个好主意,因为这样你就能确保这些依赖的版本在你的环境中是可以正常工作的。

想象一下,如果paramiko更新了,导致之前的版本不兼容,那你就会遇到麻烦了。

132

现在有了这个(免责声明:这是我做的)。

你只需要从PyPI安装 pip-chill,然后在你的Python环境中运行 pip-chill

如果你想尝试一些新东西,不想固定版本(或者想用pip-compile),可以使用 pip-chill --no-version,这样它会给你当前环境所需的最少依赖。

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

撰写回答