2017-06-12 58 views
3

我使用Artifactory来承载大量的python模块。有几次,https://pypi.python.org/pypi上的新python模块将以相同的名称上传。当有人试图使用pip从Artifactory安装我的一个模块时,这会导致问题。默认情况下,pip首先查找公共包。pip:优先考虑私人pypi服务器

这是我已经试过:

1.我试图改变我的相应文件.pypirc,

 
[distutils] 
index-servers= 
     artifactory 
     pypi 

与两个索引服务器相应的条目,但我相当肯定小点忽略了这些信息。

2.我试过手动指定要使用哪个索引服务器。

我可以指定--index-url--extra-index-url,但是当公共软件包的版本号比我的私有软件包更高时,后者不起作用。如果我指定前者,则无法找到公共依赖关系!这就像我赢不了。

3.我试过在setup.py中指定dependency_links

...但是不赞成这种方式按照这样的回答:pip ignores dependency_links in setup.py

如何配置PIP喜欢我Artifactory的库在公开招标?

回答

2

你可以检查,如果这个工程:

pip3 install --index-url https://artifactory.your.company.com/artifactory/api/pypi/your-pypi-here/simple --extra-index-url https://pypi.python.org/simple coolpackage 

这可以把里面的〜/将该.pip/pip.conf,使这个默认值。

[global] 
index-url = https://artifactory.your.company.com/artifactory/api/pypi/your-pypi-here/simple 
extra-index-url = https://pypi.python.org/simple 

然后,你可以做

pip install coolpackage 
+0

它的工作原理!我想弄清楚如何使这个默认。 – Tom

+1

@Tom更新了如何使其成为默认的答案。 – Tathagata

+0

由于某种原因,这实际上不起作用! :(我用另一个软件包试了一下,它仍然在从pypi找到一个同名的软件包 – Tom