2015-05-21 45 views
4

我的項目依賴於一些公共包和一些私人包。其中一個私有名稱與PyPi上的另一個公共包相同(我們稱之爲'衝突')。在我的setup.py文件我有點名衝突

install_requires = ['public_a', 'public_b', 'conflicting' ], 
dependency_links = ['https:blah/blah/blah/conflicting.git#egg=conflicting'] 

即使我指定我的依賴關係鏈接雞蛋,PIP仍安裝公共包「相沖突」。有名稱衝突時,是否有辦法優先考慮私有包?

+0

你有沒有找到修復/解決方法? – augurar

+0

@augurar不幸的不是 – Andrew

+0

如果重命名私人包不是一個選項,你可以避免使用公共使用的版本。所以如果公共包有1.0,1.1,1.2,你的私有包可以使用1.0-pro,1.1-dev,1.2.111。然後您在install_requires和dependency_links中明確設置版本。我不知道這是否可行。 – approxiblue

回答

0

您可以設置您自己的PyPi服務器,並將其用作主要來源,並將其用作輔助來源。這將優先考慮您的包裹在公共場合。

例如手動: pip install --index-url=<your-pipy-server> --extra-index-url=https://pypi.python.org/simple <your package>

當然,如果您嘗試安裝的版本在您的服務器上缺失,但可從衝突的公共包中獲得,則可能會發生錯誤。

2

我知道這是一個黑客位,但這是容易的,它的實際工作:

添加100到本地包的版本號。只要pip可以通過--extra-index--find-links options找到您的本地軟件包,它就會比較版本號並採用符合相關軟件包setup.py中指定的版本限制的最高可用版本。如果你的軟件包有更高的版本,它會贏。