Pip не устанавливает зависимости, объявленные в setup.py, с помощью install_requires

В проекте Python я использую install_requires в своем setup.py следующим образом.

install_requires=['numpy', 'scipy', 'matplotlib']

Затем я создаю исходный код, двоичный файл и колеса следующим образом.

python setup.py sdist bdist bdist_wheel

Когда я публикую, я использую twine.

twine upload --repository dist/testpypi mypackage-0.1.1-py2-none-any.whl

Затем в среде conda Python 2.7 я пытаюсь протестировать установку.

pip install -i https://test.pypi.org/simple/ mypackage==0.1.1

Однако я получаю следующее сообщение об ошибке:

ERROR: Could not find a version that satisfies the requirement matplotlib (from mypackage) (from versions: none)
ERROR: No matching distribution found for matplotlib (from mypackage)

Когда я делаю pip list и conda list, действительно, в списке нет пакета matplotlib.

Что я делаю не так? Я думал (этот момент, где мое понимание ломается), что install_requires перечислит предварительные требования, а pip install подхватит это и автоматически установит требования? Однако кажется, что install_requires действует как защита от установки пакета, если его объявленные зависимости еще не установлены.

В некоторых поисковых запросах в Интернете мне предлагают включить requirements.txt через MANIFEST.in (например, include requirements.txt), а затем pip install автоматически установит зависимости. Однако, попробовав этот подход, я все равно получаю то же сообщение об ошибке. Я пробовал с requirements.txt следующим образом.

matplotlib

А также следующим образом.

matplotlib>=2.2.3

Как настроить/настроить setup.py и мой дистрибутив так, чтобы pip install или conda install автоматически устанавливали объявленные зависимости через install_requires?


person Jane Wayne    schedule 02.08.2019    source источник
comment
Не могли бы вы дать нам попробовать? Указав имя пакета?   -  person Sraw    schedule 02.08.2019


Ответы (1)


Проблема в том, что pip ищет пакеты в том же репозитории, что и выбранный пакет. Поэтому, если вы предоставите возможность использовать https://test.pypi.org/simple/, он будет искать пакеты здесь, а не на https://pypi.org/simple/.

Вы думаете, что вам нужно использовать параметр --extra-index-url

--extra-index-url <url>     Extra URLs of package indexes to use in addition to --index-url. Should follow the same rules as --index-url.

Так что попробуйте:

pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ mypackage==0.1.1
person Grzegorz Bokota    schedule 02.08.2019