Вопрос-Ответ

Pip install from pypi works, but from testpypi fails (cannot find requirements)

Pip-установка из pypi работает, но из testpypi завершается с ошибкой (не удается найти требования)

Я пытаюсь создать свой первый пакет python. Чтобы не испортить всю сделку, я пытался загрузить его на серверы testpypi. Кажется, все идет нормально (sdist создает и загружает, не показывает никаких ошибок). Однако, когда я пытаюсь установить его на новый virtualenv из https://testpypi.python.org/pypi, он жалуется на мои требования к установке, например:

pip install -i https://testpypi.python.org/pypi poirot
Collecting poirot
Downloading https://testpypi.python.org/packages/source/p/poirot/poirot-0.0.15.tar.gz
Collecting tqdm==3.4.0 (from poirot)
Could not find a version that satisfies the requirement tqdm==3.4.0 (from poirot) (from versions: )
No matching distribution found for tqdm==3.4.0 (from poirot)

мои единственные требования - tqdm и Jinja2. Я пробовал указывать версии, но не указывал —ошибка в каждом случае.

Похоже, что он пытается найти tqdm и Jinja2 на сервере testpypi и не находит их (потому что они доступны только в обычном pypi). Загрузка пакета на нетестовый сервер и запуск pip install сработали.

Что мне нужно добавить в файл setup.py (ниже), чтобы он находил требования при загрузке в testpypi?

Спасибо!

try:
from setuptools import setup
except ImportError:
from distutils.core import setup

setup(name='poirot',
version='0.0.15',
description="Search a git repository's revision history for text patterns.",
url='https://github.com/dcgov/poirot',
license='https://raw.githubusercontent.com/DCgov/poirot/master/LICENSE.md',
packages=['poirot'],
install_requires=['tqdm==3.4.0', 'Jinja2==2.8'],
test_suite='nose.collector',
tests_require=['nose-progressive'],
classifiers=[
'Environment :: Console',
'Intended Audience :: Developers',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5'
],
include_package_data=True,
scripts=['bin/big-grey-cells', 'bin/little-grey-cells'],
zip_safe=False)
Переведено автоматически
Ответ 1

Обновить

PyPI обновил свой сайт. Согласно документации, новый совет таков:

python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple poirot


  • --index-url указывает на ваш пакет в TestPyPI.

  • --extra-index-url указывает на зависимости от PyPI.

  • poirot это ваш пакет.

Внимание: несмотря на эту рекомендацию из официальных документов, использование --extra-index-url может быть небезопасным в определенных ситуациях, особенно на частных серверах. Смотрите также видео А. Соттиля, демонстрирующее риски, связанные с упорядочиванием опций и смешиванием общедоступных и частных серверов PyPI. Используйте с осторожностью и оценивайте свои риски.


Устарело

Попробуйте pip install --extra-index-url https://testpypi.python.org/pypi poirot.

Смотрите также справочный пост.

Ответ 2

При попытке в январе 2021 года обновление в принятом ответе у меня не сработало. Это сработало:

pip install -i https://test.pypi.org/pypi/ --extra-index-url https://pypi.org/simple <your_package_in_testpypi>

Обратите внимание, что первый URL -это test.pypi.org/pypi, а второй - pypi.org/simple.

Их официальная страница должна быть обновлена, как показано в инструкции:

pip install -i https://test.pypi.org/simple/ <your_package_in_testpypi>

который не работает.

2024-01-29 21:16 python pip