2017-08-01 117 views
3

我打包自己的Python軟件包。我使用setuptools和wheel來捆綁它並安裝pip(在開發模式和從測試PyPI存儲庫中)。如果PyPI上存在依賴關係,Pip將忽略dependency_links從輪安裝軟件包

安裝軟件包每個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),包從混帳回購協議下載。然後我可以分發我的包的源代碼。

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:選項(--no-cache-dir只需要確保包裝不會從緩存中安裝),第一次安裝看起來不錯。 Pip下載源碼,然後製作輪子。解決依賴關係進展順利,一切都很順利。 Pip下載相應版本的(在我的例子中)HBMQTT包並安裝它。與此同時,點子使輪子緩存起來。所以,第二次安裝(無--no-binary選項明顯的理由,並與--upgrade-I選項)失敗,因爲不滿足要求:PIP不能與0.9.1版本找到HBMQTT包。 PyPI中最新版本的HBMQTT是0.9.0。所以當試圖從wheel包安裝時,pip不會處理依賴關係鏈接。當我試圖使車輪(蟒蛇setup.py bdist_wheel),並把它上傳在測試的PyPI

同樣的事情發生。從PyPI安裝失敗以及從下載(或由我製作)wheel文件。

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

所以我的問題是我現在應該做的?哪種解決方法確實存在這種情況?我認爲這只是關於分發HBMQTT回購和製作我自己的軟件包,直到PyPI破解軟件包。

+0

嗯,我發現這種行爲延伸到PyPI中缺少包的情況。 – krautcat

回答

0

做你試試--process-dependency-link標誌?

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

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