Использование дополнительного 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, поэтому мне не нужно добавлять вторую запись.
Ответ 6
Вы можете включить --extra-index-urls
в файл requirements.txt. См.: http://pip.readthedocs.org/en/0.8.3/requirement-format.html