簡體   English   中英

如果PyPI上存在依賴關系,Pip會忽略依賴於鏈接的依賴鏈接

[英]Pip ignores dependency_links whlie installing package from wheel if dependency exists on PyPI

我正在打包我自己的Python包。 我使用setuptools和wheel來捆綁它和pip進行安裝(在開發模式和測試PyPI存儲庫中)。

每個用於安裝包的pip命令都與--process-dependency-links 我將放下此選項以進行簡化,此選項將隱含在此處。

其中一個依賴項在PyPI中被破壞,但在開發存儲庫問題已得到修復。 我知道哪個提交修復了這個問題,我知道它的SHA-1總和,所以我知道要下載哪個tarball。 所以我在setup.py文件中這樣做了:

...
install_requires=[
    'hbmqtt>0.9.0'
],
dependency_links=[
    'https://github.com/beerfactory/hbmqtt/archive/f4330985115e3ffb3ccbb102230dfd15bb822a72.zip#egg=hbmqtt-0.9.1'
],
...

當我在開發模式下安裝軟件包(通過setuptools和pip)時,從git repo下載軟件包。 然后我可以分發我的包的源代碼。

python setup.py sdist
twine upload -s --sign-with gpg2 -r testpypi dist/<pkg-name>-<version>.tar.gz

然后我可以從PyPI安裝它。 如果我沒有同時設置--no-cache-dir--no-binary :all: options(僅需要--no-cache-dir以確保沒有從緩存中安裝包),安裝看起來不錯。 Pip下載源然后制作輪子。 解決依賴關系很順利,一切看起來都還可以。 Pip下載適當版本的(在我的示例中)HBMQTT包並安裝它。 同時pip制作輪子然后緩存它。 所以第二次安裝(由於明顯的原因沒有--no-binary選項以及--upgrade-I選項)由於不滿足要求而失敗:pip無法找到版本0.9.1的HBMQTT包。 PyPI中HBMQTT的最新版本是0.9.0。 因此pip在嘗試從wheel包安裝時不會處理依賴關系鏈接。

當我嘗試制作wheel(python setup.py bdist_wheel)並將其上傳到測試PyPI時,會發生同樣的事情。 從PyPI安裝失敗以及從下載(或由我制作)輪文件失敗。

我認為麻煩位於點或輪。 我不知道哪一個負責從車輪安裝。

所以我的問題是我現在應該做些什么? 對於這種情況,確實存在哪些變通辦法? 我認為只有分支要求HBMQTT倉庫並制作我自己的包,直到PyPI破壞了包裹。

你嘗試過--process-dependency-link標志嗎?

https://github.com/pypa/pip/issues/4295

編輯:抱歉,我現在看到你試過了。 對我來說,這解決了這個問題,但這對你來說並不是很有用。

暫無
暫無

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

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