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

Я пытаюсь создать свой первый пакет Python. Чтобы не испортить всю сделку, я пытался загрузить его на серверы testpypi. Кажется, все идет нормально (sdist создает и выгрузка не показывает никаких ошибок). Однако, когда я пытаюсь установить его на новый виртуальный сервер с 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)

person lfbet    schedule 29.12.2015    source источник
comment
У меня такая же проблема. Можете ли вы добавить вывод pip install --verbose --index-url https://testpypi.python.org/pypi/ poirot?   -  person pylang    schedule 01.01.2016


Ответы (2)


Обновить

PyPI обновил свой сайт. Согласно docs, новый совет:

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 - это ваш пакет.

Устарело

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

См. Также справочное сообщение.

person pylang    schedule 02.01.2016
comment
Для тех, кто в более поздние годы - ›используйте вместо этого https://test.pypi.org/simple/. - person Marcin Orlowski; 02.03.2019
comment
Я попробовал это решение и столкнулся с другой проблемой. На pypi есть еще один пакет, имя которого совпадает с именем моего пакета, и команда устанавливает другой пакет из pypi вместо моего пакета. Можно ли установить собственный пакет на testpypi и зависимости от pypi? - person Qi Yin; 27.04.2021

При попытке в январе 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>

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

person Logan Yang    schedule 15.01.2021