#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
просматривает индекс, а затем сканирует дополнительные индексы, пока не найдет пакет.