当我执行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,并且我不想依赖于一个包,直到我更了解如何避免意外卸载或升级它。
就像我最近在hn线程上说的,我将推荐以下内容:
创建一个带有注释的requirements.txt文件,其中包含你的主要依赖项:
## this is needed for whatever reason
package1
安装你的依赖项:pip Install -r requirements.txt。
现在你得到了pip freeze -r requirements.txt的完整依赖列表:
## this is needed for whatever reason
package1==1.2.3
## The following requirements were added by pip --freeze:
package1-dependency1==1.2.3
package1-dependency1==1.2.3
这允许你用注释来保持你的文件结构,很好地将你的依赖关系和依赖关系的依赖关系分开。这样你就可以在你需要移除其中一个的那天过得更愉快:)
注意事项:
你可以有一个干净的要求。Raw与版本控制,以重建您的完整需求。txt。
小心git url在此过程中被egg名称替换。
依赖项的依赖项仍然是按字母顺序排序的,因此您不能直接知道哪个包需要哪个依赖项,但此时您并不真正需要它。
使用pip install——no-install <package_name>列出具体要求。
如果不需要,可以使用virtualenv。