在 setup.py 中使用额外的 python 包索引 url

问题描述 投票:0回答:8

有没有办法将额外的Python包索引(ala

pip --extra-index-url pypi.example.org mypackage
)与
setup.py
一起使用,以便运行
python setup.py install
可以找到托管在
pypi.example.org
上的包?

python pip packaging setup.py pypi
8个回答
62
投票

如果您是软件包维护者,并且希望在 PyPi 之外的其他位置托管软件包的一个或多个依赖项,则可以在发行版的 setuptools 文件中使用

setup.py
dependency_links
选项。这使您可以提供包裹所在的明确位置。

例如:

from setuptools import setup

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

如果您托管自己的索引服务器,则需要提供包含每个egg的实际下载链接的页面的链接,而不是列出所有包的页面(例如

https://pypi.example.org/pypi/somedep/
,而不是
https://pypi.example.org/


17
投票

setuptools 在底层使用 easy_install

它依赖于setup.cfg~/.pydistutils.cfg,如here所述。

packages 的额外路径可以使用 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

8
投票

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

easy_install
已弃用
setuptools
的使用。

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

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

请使用

pip
继续前进。您可以执行以下操作之一:

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

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


4
投票

以下内容对我有用(开发,而不是安装):

$ python setup.py develop --index-url https://example.xyz/r/pypi-proxy/simple

其中

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


3
投票

使用 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
将存在于文件
setup.cfg
中:

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

-2
投票

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

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

[global]
download_cache = ~/.cache/pip
index-url = http://user:[email protected]:80/simple
timeout = 300

在这种情况下,我的本地 pypiserver 还代理来自 pypi.python.org 的所有包,因此我不需要添加第二个条目。


-2
投票

这对我有用

PIP_INDEX_URL=<MY CUSTOM PIP INDEX URL> pip install -e .

我使用setup.py和setup.cfg


-8
投票

您可以将

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

© www.soinside.com 2019 - 2024. All rights reserved.