簡體   English   中英

獲取 pip 依賴版本而不安裝?

[英]Getting pip dependency versions without installing?

當您告訴 pip 同時安裝多個包時,它會查找所有子依賴項並安裝所有父 package 限制允許的最新版本。

例如,如果 packageA 要求 child>=0.9,而 packageB 要求 child<=1.1,那么 pip 將安裝 child==1.1。

我正在嘗試編寫一個腳本來掃描requirements.txt並固定所有未列出的子 package 版本。

一種方法是通過pip install -r requirements.txt簡單地安裝requirements.txt文件中的所有內容,然后解析 pip pip freeze的 output,並從我的requirements.txt文件中刪除所有包。 剩下的應該是子包和 pip 計算出的最高版本號。

但是,這需要創建一個 Python 虛擬環境並安裝所有包,這可能需要一點時間。 pip 中是否有任何選項可以在不實際安裝軟件包的情況下進行版本計算? 如果沒有,是否有提供此功能的類似 pip 的工具?

您可以使用 json 模塊閱讀 PyPI 托管包的 package 要求:

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()

如果我正確地回答了你的問題,你正在嘗試安裝 package 的特定版本,一種方法是在你的 requirement.txt 文件中指定版本之后,它可以通過使用 pip 安裝然后依賴項加上版本來安裝例如 pip 安裝 WhatsApp v3.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM