pip не может установить пакеты, перечисленные в install_requires - PullRequest
0 голосов
/ 04 июля 2019

Я создал пакет Python, загрузил его в TestPyPI и попытался установить в новую виртуальную среду. pip не может установить требуемые пакеты, но если я попытаюсь установить те же пакеты с pip install -r requirements.txt, это сработает.

Я создал свой setup.py файл, следуя инструкциям, перечисленным в Упаковка проектов Python . Я загрузил свой пакет в TestPyPI и попытался установить его в совершенно новую виртуальную среду с Python 3.6.4 и pip 19.1.1.

Вот моя инструкция по установке: pip install -i https://test.pypi.org/simple/ my-package-name==0.0.1

Вот что я имею в setuptools.setup звонке (только связанные вещи):

   packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3.4",
        "Programming Language :: Python :: 3.5",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
    ],
    install_requires=[
        "requests",
        "jsonpickle",
        "pandas",
        "matplotlib",
        "seaborn",
        "Pillow"
    ]

Он начинается с успешной установки matplotlib, но позже я получаю следующую ошибку:

ERROR: Could not find a version that satisfies the requirement jsonpickle (from my-package-name==0.0.1) (from versions: none) ERROR: No matching distribution found for jsonpickle (from my-package-name==0.0.1)

Я также пытался указать версии пакетов, но затем не могу установить пакеты.

Как я уже сказал, я могу установить пакеты просто с помощью команды pip install -r requirements.txt.

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Это неприятный (и известный) недостаток TestPyPI: проблема в том, что jsonpickle не существует в TestPyPI, и, устанавливая ваш пакет оттуда, вы сообщаете pip, что нужно искать и там зависимости.

Вместо этого вы должны публиковать в PyPI и использовать предварительную версию, чтобы не загрязнять ваши версии.Вы можете удалить эти предварительные релизы из проекта позже.

0 голосов
/ 04 июля 2019

лучше, если вы создадите файл require.txt и добавите требуемый пакет в этот файл и в setup.py откройте этот файл, получите пакет в списке и добавьте его в setup.py

, например:

needs.txt

requests
jsonpickle
pandas
matplotlib
seaborn
Pillow

и в setup.py

with open('requirements.txt') as f:
    requirements = f.read().splitlines()

...

setup(
    name='package name',
    version='version',
    install_requires=requirements,
    ...
)

почему так?-> Таким образом, вам нужно только поддерживать файл require.txt и не дублировать его в setup.py

...