使用带有setup.py的额外python包索引url

时间:2014-06-27 03:42:53

标签: python packaging setup.py pypi

有没有办法在pip --extra-index-url pypi.example.org mypackage上使用额外的python包索引(ala setup.py),以便运行python setup.py install可以找到pypi.example.org上托管的包?

6 个答案:

答案 0 :(得分:28)

如果您是软件包维护者,并且希望在PyPi以外的地方托管软件包的一个或多个依赖项,则可以在您的发行版{{1}中使用setuptools setup.py选项文件。这允许您提供可以找到包裹的明确位置。

例如:

from setuptools import setup

setup(
    name='somepackage',
    install_requires=[
        'somedep'
    ],
    dependency_links=[
        'https://pypi.example.org/pypi/somedep/'
    ]
    # ...
)

如果您拥有自己的索引服务器,则需要提供指向包含每个鸡蛋的实际下载链接的页面的链接,而不是列出所有包的页面(例如https://pypi.example.org/pypi/somedep/,而不是{{1 }})

答案 1 :(得分:8)

setuptools 使用了 easy_install

它依赖于记录为here setup.cfg 〜/ .pydistutils.cfg

packages 的额外路径可以使用find_links在这些文件中定义。您可以使用 index_url 覆盖注册表网址,但无法提供 extra-index-url 。以下示例受文档启发:

[easy_install]
find_links = http://mypackages.example.com/somedir/
             http://turbogears.org/download/
             http://peak.telecommunity.com/dist/
index-url = https://mypi.example.com

答案 2 :(得分:1)

使用Dockerfile时找到了解决方案:

RUN cd flask-mongoengine-0.9.5 && \
    /bin/echo -e [easy_install]\\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple >> setup.cfg && \
    python setup.py install

其中/bin/echo -e [easy_install]\\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple将输出:

[easy_install]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

答案 3 :(得分:0)

据我所知,你不能这样做。 你需要告诉pip,或者通过传递你提到的参数,或者在用户环境中设置它。

检查我的〜/ .pip / pip.conf:

[global]
download_cache = ~/.cache/pip
index-url = http://user:pass@localpypiserver.com:80/simple
timeout = 300

在这种情况下,我的本地pypiserver也会代理pypi.python.org中的所有包,所以我不需要添加第二个条目。

答案 4 :(得分:0)

以下对我有用:

$ python setup.py install --index-url https://x.com/n/r/pypi-proxy/simple

https://x.com/n/r/pypi-proxy/simple是本地PyPI存储库。

答案 5 :(得分:-3)

您可以在requirements.txt文件中包含--extra-index-urls。请参阅:http://pip.readthedocs.org/en/0.8.3/requirement-format.html