Почему не устанавливаются зависимости установки пакета в setup.py?page/h1>

Michael Klear спросил: 10 мая 2018 в 04:09 в: python

Я создал пакет Python с параметром setup.py, который выглядит так:

from setuptools import setup, find_packagessetup(
     name='my_package',
     version='0.1',
     url='https://github.com/me/my_package',
     download_url='https://github.com/dwnlod.tar.gz',
     author='me',
     author_email='myname@email.com',
     license='MIT',
     packages=['my_package'],
     install_requires=[
         'numpy',
         'other_package'
     ]
)

Когда я устанавливаю пакет локально с

pip install .

, Pip устанавливает все зависимости в install_requires. Однако, когда я регистрирую пакет через PyPI и использую

pip install my_package

Pip не устанавливает зависимости. (Я сделал это со свежей средой, поэтому пакеты уже не установлены, установка не работает.) Что происходит? Прочитав документацию, похоже, что-то вроде

     install_requires=[
         'numpy==1.14.1',
         'other_package==ve.rs.ion'
     ]

Может работать лучше, потому что указаны версии. Может ли это быть проблемой?

Вот ссылка на репо:

PyCDA на GitHub
PyCDA на PyPI

1 ответ

Есть решение
jwodder ответил: 10 мая 2018 в 05:41

Ваш setup.py содержит следующую строку:

path = pkg_resources.resource_filename('pycda', 'models/tinynet.h5')

Основываясь на трассировке, которую я получаю при попытке установить ваш пакет, этот вызов делает pkg_resources попытайтесь импортировать ваш пакет, но ваш пакет импортирует numpy. Поскольку numpy не может быть установлен, если только pip не знает, что это зависимость, и потому что он не может знать, что это зависимость без запуска setup.py, а потому, что setup.py может 't запустить без предварительного вызова вышеуказанного pkg_resources, мы закончим в ситуации, когда требуется numpy, прежде чем мы сможем узнать, что это необходимо; следовательно, ошибка. Решение состоит в том, чтобы удалить указанную выше строку, что должно быть легко, поскольку переменная path даже не используется!