2015-05-21 48 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中指定的版本限制的最高可用版本。如果你的软件包有更高的版本,它会赢。