在不安装 PyPI 的情况下获取包的要求? [复制]

Posted

技术标签:

【中文标题】在不安装 PyPI 的情况下获取包的要求? [复制]【英文标题】:Get the requirements of a package in PyPI without installing it? [duplicate] 【发布时间】:2018-10-27 02:23:13 【问题描述】:

我需要类似以下的东西:

pip showrequirements tensorflow

这将返回允许我解析所需包的名称和所需版本的内容:

astor>0.6, tensorboard>1.0.11, etc.

pip 在安装和下载命令期间以某种形式获取此信息。我可以看到它在代码中发生的位置......但在我破解使用 pip 内部代码的方式之前,是否有任何简单的 API 或现有库可以做到这一点?

编辑:我无法安装包来查看这个,所以 pip show 不起作用。一种(hacky)解决方案是解析 pip 下载的输出。

谢谢!

【问题讨论】:

【参考方案1】:
pip show <package_name>

将在“Requires”部分列出依赖项。见documentation。

编辑:

pip show 仅适用于已安装的软件包。对于已卸载的包,PyPI 有一个JSON API。

例如:

import json

import requests

package_name = 'tensorflow'
url = 'https://pypi.python.org/pypi/' + str(package_name) + '/json'
data = requests.get(url).json()

print(data['info']['requires_dist'])

【讨论】:

【参考方案2】:

所以在旧版本的 pip 中曾经有一个 --no-install 标志,but no longer。 pip show 将向您显示“Requires”属性,但仅适用于安装在您的环境(系统或您的 venv)中的软件包,您似乎想在安装之前检查需求。所以,可悲的是,我认为没有一种很好的方法来完成你正在寻找的东西。

【讨论】:

以上是关于在不安装 PyPI 的情况下获取包的要求? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我可以在不在 pypi 中注册包的情况下制作 pip 可安装包吗?

如何在不明确约束所有依赖包的情况下约束与PHP的兼容性

NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包

有没有办法在不安装包的情况下按字母顺序排列 package.json?

如何在不使用pip或conda安装的情况下链接Selenium等库?

添加价格和库存后如何在不复制产品的情况下获取数据