Не могу установить свой собственный пакет PyPI: требования не могут быть удовлетворены

#python #pip #setuptools #pypi

Вопрос:

Я пытаюсь опубликовать пакет PyPI. Я тестирую, сначала загрузив в TestPyPI. Мой setup.py довольно прост:

 import pathlib
from setuptools import setup, find_packages

# The directory containing this file
HERE = pathlib.Path(__file__).parent

# The text of the README file
README = (HERE / "README.md").read_text()

# This call to setup() does all the work
setup(
    name="my_package_name",
    version="0.0.1",
    description="My first Python package",
    long_description=README,
    long_description_content_type="text/markdown",
    url="https://github.com/my_package_url",
    author="John Smith",
    author_email="john.smith@gmail.com",
    license="MIT",
    classifiers=[
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.7",
    ],
    packages=find_packages(exclude=("test",)),
    include_package_data=True,
    install_requires=[
        "numpy",
        "scipy",
        "pandas",
        "statsmodels",
    ],
)
 

Я следую этому уроку. В принципе, как только setup.py все готово, я бегу

python3 setup.py sdist bdist_wheel

затем

twine upload --repository-url https://test.pypi.org/legacy/ dist/*

Наконец, чтобы на самом деле протестировать установку пакета, я создаю новую виртуальную среду и запускаю

pip install -i https://test.pypi.org/simple/ my_package_name

Тем не менее, я продолжаю получать ошибки, связанные с pandas невыполнением требований и statsmodels требований:

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

Это потому, что у TestPyPI нет этих пакетов (в отличие от PyPI)? Тогда как люди обычно тестируют от начала до конца, чтобы их пакеты могли быть плавно установлены другими пользователями?

Комментарии:

1. Попробуйте добавить --no-dependencies флаг, чтобы пропустить сообщения?

Ответ №1:

У вас может быть только один индекс, но у вас может быть столько дополнительных индексов, сколько вы пожелаете. Добавьте основной PyPI в качестве дополнительного индекса:

 pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ my_package_name
 

Сначала pip просматривает индекс, а затем сканирует дополнительные индексы, пока не найдет пакет.