Использование дополнительного URL-адреса пакета python с параметром setup.py

Есть ли способ использовать дополнительный индекс пакета python (ala pip --extra-index-url pypi.example.org mypackage) с setup.py, так что запуск python setup.py install может найти пакеты, размещенные на pypi.example.org?

Ответы

Ответ 1

Если вы поддерживаете пакет и хотите разместить одну или несколько зависимостей для своего пакета где-то, кроме PyPi, вы можете использовать dependency_links 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/, not https://pypi.example.org/)

Ответ 2

setuptools использует easy_install под капотом.

Он основан на файле setup.cfg или ~/.pydistutils.cfg, как описано здесь.

Дополнительные пути к пакетам могут быть определены в любом из этих файлов с помощью find_links. Вы можете переопределить URL реестра с помощью index_url, но не можете предоставить дополнительный индексный 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

Ответ 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 будет выводить:

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

Ответ 4

У меня работает следующее (разработать, не установить):

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

Где https://x.com/n/r/pypi-proxy/simple - локальный репозиторий PyPI.

Ответ 5

Насколько я знаю, вы не можете это сделать. Вам нужно сообщить об этом, или передав параметр, как вы упомянули, или установив его в пользовательской среде.

Проверьте мой файл ~/.pip/pip.conf:

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

В этом случае мой локальный pypiserver также проксирует все пакеты с pypi.python.org, поэтому мне не нужно добавлять вторую запись.