如何确定使用pip安装的python软件包的依赖关系?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (995)

当我做点冻结时,我看到大量的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,并且我不想依赖于软件包,除非我知道更多关于不小心卸载或升级它的信息。

提问于
用户回答回答于

可以尝试将依赖关系显示为树结构的pipdeptree,例如:

$ pipdeptree
Lookupy==0.1
wsgiref==0.1.2
argparse==1.2.1
psycopg2==2.5.2
Flask-Script==0.6.6
  - Flask [installed: 0.10.1]
    - Werkzeug [required: >=0.7, installed: 0.9.4]
    - Jinja2 [required: >=2.4, installed: 2.7.2]
      - MarkupSafe [installed: 0.18]
    - itsdangerous [required: >=0.21, installed: 0.23]
alembic==0.6.2
  - SQLAlchemy [required: >=0.7.3, installed: 0.9.1]
  - Mako [installed: 0.9.1]
    - MarkupSafe [required: >=0.9.2, installed: 0.18]
ipython==2.0.0
slugify==0.0.1
redis==2.9.1

为了让它运行:

pip install pipdeptree

还可以用-r或者对于一个单独的包裹-p <package_name>因此,要找到已安装的Werkzeug,可以运行:

$ pipdeptree -r -p Werkzeug
Werkzeug==0.11.15
  - Flask==0.12 [requires: Werkzeug>=0.7]
用户回答回答于

pip show命令将显示指定程序包需要哪些程序包(请注意,必须已安装指定的程序包):

$ pip show specloud

Package: specloud
Version: 0.4.4
Requires:
nose
figleaf
pinocchio

pip show在pip版本1.4rc5中引入。

扫码关注云+社区

领取腾讯云代金券