当我执行pip冻结时,我看到了大量我没有明确安装的Python包,例如。
$ pip freeze
Cheetah==2.4.3
GnuPGInterface==0.3.2
Landscape-Client==11.01
M2Crypto==0.20.1
PAM==0.4.2
PIL==1.1.7
PyYAML==3.09
Twisted-Core==10.2.0
Twisted-Web==10.2.0
(etc.)
有没有办法让我确定pip为什么安装这些特定的依赖包?换句话说,如何确定将这些包作为依赖项的父包?
例如,我可能想要使用Twisted,并且我不想依赖于一个包,直到我更了解如何避免意外卸载或升级它。
你有两个选择。
第一个将输出所有顶级包,不包括子包。请注意,这也将排除示例请求,即使您希望显式地安装它
pip3 list --not-required --format freeze --exclude pip --exclude setuptools
第二个选项是根据现有的requirements.txt文件打印包。
pip3 freeze -r requirements.txt
这将生成一个格式为:
existing-package==1.0.0
## The following requirements were added by pip freeze:
dependency-package==1.0.0
你可以使用sed删除所有额外添加的包:
pip3 freeze -r requirements.txt | sed -n '/## The following requirements were added by pip freeze:/q;p'