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

Jer*_*emy 29 python packaging pypi setup.py

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

小智 35

如果您是软件包维护者,并且希望在PyPi之外的某个地方托管一个或多个依赖项,则可以使用分发文件中的dependency_links选项.这允许您提供可以找到包的明确位置.setuptoolssetup.py

例如:

from setuptools import setup

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

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

  • 据我所知,依赖链接已被弃用,请参阅例如:https://github.com/pypa/setuptools/issues/987 和 https://github.com/pypa/pip/issues/4187 (8认同)
  • 答案中的链接表示 pip 现在忽略了“dependency_links”,但没有说明要使用什么。 (5认同)
  • 有人找到替代品了吗? (3认同)
  • 这似乎不再有效,因为 pypi 从 v19.0 开始不再支持 --process-dependency-links (3认同)

Tom*_*Tom 11

setuptools在引擎盖下使用easy_install.

它依赖于setup.cfg〜/ .pydistutils.cfg,如此处所述.

可以使用find_links在这些文件中定义包的额外路径.您可以使用index_url覆盖注册表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
Run Code Online (Sandbox Code Playgroud)

  • 感谢 setup.cfg 示例,工作得很好,不幸的是现在已弃用简易安装:https://setuptools.pypa.io/en/latest/deprecated/easy_install.html (2认同)

rrl*_*ane 7

我想发布一个最新的答案,因为两个最重要的答案都已过时;easy_install已弃用的使用setuptools

https://setuptools.pypa.io/en/latest/deprecated/easy_install.html

简易安装已被弃用。不要使用它。而是使用点。如果您认为需要轻松安装,请联系 PyPA 团队(pip 或 setuptools 的门票即可),描述您的用例。

请使用pip前进。您可以执行以下操作之一:

  1. --index-urlpip命令提供标志
  2. index-urlpip.conf文件中定义
  3. 定义PIP_INDEX_URL环境变量

https://pip.pypa.io/en/stable/topics/configuration/