python - 识别使用 pip 安装的 python 包的依赖关系

标签 python pip

当我执行 pip freeze 时,我看到了大量我没有明确安装的 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


编辑: 正如@Esteban 在评论中所指出的,您还可以使用 -r 反向列出树或带有 -p <package_name> 的单个包所以要找到你可以运行的安装 Werkzeug:

$ pipdeptree -r -p Werkzeug
Werkzeug==0.11.15
  - Flask==0.12 [requires: Werkzeug>=0.7]

关于python - 识别使用 pip 安装的 python 包的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232568/

相关文章:

python - ProgrammingError : (psycopg2. ProgrammingError) 无法适配类型 'dict'

python - Ansible错误: "The Python 2 bindings for rpm are needed for this module"

python - 在 Windows 上使用 pip 安装引导式 LDA 包

python - 使用 python 选择文本的特定部分

python - Matlab 或 IDL 用户可以处理 Python 日期时间对象吗?

python-3.x - 安装 assimulo 和日晷 - 错误

python - 在 Windows 7 64 位上运行 "error: Unable to find vcvarsall.bat"时获取 "pip install numpy"

python - 如何在 linux 上为所有使用 pip 的用户安装模块?

python - 用于 Map-Reduce 的 Celery,或 Python 中的其他替代品?

python - Revit Python 拾取对象/选择对象