当您告诉pip同时安装多个包时,它会查找所有子依赖项,并安装所有父包限制所允许的最新版本。
例如,如果packageA需要child>0.9,并且包B需要child<1.1,则pip将安装child==1.1。
我正在尝试编写一个脚本来扫描requirements.txt
并固定所有未列出的子包版本。
一种方法是简单地通过pip install -r requirements.txt
安装requirements.txt
文件中的所有内容,然后解析pip freeze
的输出,并从我的requirements.txt
文件中删除所有包。剩下的所有东西都应该是子包和pip计算的最高版本号。
然而,这需要创建一个Python虚拟环境并安装所有包,这可能需要一些时间。pip中是否有任何选项可以在不实际安装软件包的情况下进行版本计算?如果没有,是否有类似pip的工具可以提供此功能?
您可以阅读带有json模块的PyPI托管包的包要求:
python3终端/脚本:
import csv
import json
import requests
your_package = str('packageA')
pypi_url = 'https://pypi.python.org/pypi/' + your_package + '/json'
data = requests.get(pypi_url).json()
reqs = data['info']['requires_dist']
print(reqs)
print('Writing requirements for ' + your_package + ' to requirements.csv')
f = open('requirements.csv', 'w')
w = csv.writer(f, delimiter = ',')
w.writerows([x.split(',') for x in reqs])
f.close()
如果我正确回答了你的问题,你正试图安装一个特定版本的软件包,一种方法是在你的requirement.txt文件中指定版本后,可以使用pip-install安装,然后使用依赖项加上版本示例pip安装WhatsApp v3.5