python - 如何在不安装的情况下列出 python 库的依赖项?

标签 python pip python-packaging

<分区>

有没有办法在不先安装给定 python 包的情况下获取依赖项列表?

我目前可以获得需求列表,但它需要安装软件包。例如,我可以使用 pip 来显​​示基本的需求信息,但它不包括版本信息:

$ pip show pytest
Name: pytest
Version: 3.0.6
...
Requires: colorama, setuptools, py

我试过一个名为 pipdeptree 的库这包括更好的需求输出,但它也需要安装包

$ pipdeptree -p pytest
pytest==3.0.6
- colorama [required: Any, installed: 0.3.7]
- py [required: >=1.4.29, installed: 1.4.32]
- setuptools [required: Any, installed: 34.0.0]
  - appdirs [required: >=1.4.0, installed: 1.4.0]
...

理想情况下,我会得到 pipdeptree 提供的详细程度。此外,能够从 python wheel 或使用 pip 从 pypi 生成 requirements.txt 文件也足够了。

我对给定包的依赖性约束感兴趣,而不是解决依赖性要求后最终下载的包。例如,我真的不关心 pip 下载了 package-2.3.4,我宁愿知道 package>=2.1 是一个要求。

最佳答案

PyPi 提供了一个带有包元数据的 JSON 端 pip :

>>> import requests
>>> url = 'https://pypi.org/pypi/{}/json'
>>> json = requests.get(url.format('pandas')).json()
>>> json['info']['requires_dist']
['numpy (>=1.9.0)', 'pytz (>=2011k)', 'python-dateutil (>=2.5.0)']
>>> json['info']['requires_python']
'>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*'

对于特定的包版本,在 URL 中添加一个额外的版本段:

https://pypi.org/pypi/pandas/0.22.0/json

关于python - 如何在不安装的情况下列出 python 库的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816693/

相关文章:

python - Django "./manage.py bower install"告诉我 bower 在安装时没有安装

python - 使用 pyenv,我如何 pip 安装全局 CLI 并使它们即使在 virtualenv 中也可用?

python - 为什么 IDLE 在我的代码后面添加换行符?

python - 如何创建假装提供 Python 模块的虚拟 RPM?

python - 在 pygtk 中处理双击和单击事件

python - 如何在 Flask 中动态添加项目到 jinja 变量?

python - 如何验证 pip 包的 PGP key ?

python - PyCharm 找不到 Keras

python - 列表索引超出范围

Python 从列表中删除项目