pypi UserWarning: неизвестная опция распространения: 'install_requires' - PullRequest
90 голосов
/ 28 ноября 2011

Кто-нибудь сталкивался с этим предупреждением при выполнении python setup.py install пакета PyPI?

install_requires определяет, что требуется пакету.Многие пакеты PyPI имеют эту опцию.Как это может быть «неизвестный вариант распространения»?

Ответы [ 7 ]

78 голосов
/ 21 мая 2012

python setup.py использует distutils, который не поддерживает install_requires.setuptools также распространяет (его преемник) и pip (который использует либо).Но вы на самом деле должны использовать их.Т.е. вызывайте setuptools через команду easy_install или pip install.

Другой способ - импортировать настройки из setuptools в ваш setup.py, но это не является стандартным и заставляет всех, кто хочет использовать ваш пакет, установить setuptools.

16 голосов
/ 22 августа 2018

Это был первый результат в моем поиске в Google, но ответа не было. Я обнаружил, что обновление setuptools решило проблему для меня (и pip для хорошей меры)

pip install --upgrade pip
pip install --upgrade setuptools

Надеюсь, это поможет следующему человеку найти эту ссылку!

15 голосов
/ 21 мая 2012

ВНИМАНИЕ ! ВНИМАНИЕ !Несовершенный ответ впереди.Чтобы получить «последнее напоминание» о состоянии упаковки во вселенной Python, прочитайте это довольно подробное эссе .

. Я только что столкнулся с этой проблемой при попытке собрать / установить ANSIBLE.Кажется, проблема в том, что distutils действительно не поддерживает install_requires.Setuptools должен monkey-patch distutils на лету, но это не так, вероятно, потому что последний выпуск setuptools - 0.6c11 от 2009 года, тогда как distutils - основной проект Python.

Таким образом, даже после ручной установки setuptools-0.6c11-py2.7.egg при запуске setup.py получает только distutils dist.py, а не один из site-packages / setuptools /.

Также setuptoolsдокументация намекает на использование ez_setup и не distutils.

Однако в настоящее время setuptools сам по себе распространяет , и этот вариант setup () поддерживает install_requires.

8 голосов
/ 06 июня 2018

Я на Mac с python 2.7.11. Я занимался созданием чрезвычайно простых и простых проектов, где мое единственное требование - я могу запустить python setup.py install и setup.py использовать команду setup, в идеале из distutils. Буквально нет никакого другого импорта или кода, кроме kwargs к setup(), кроме того, что я отмечаю здесь.

Я получаю сообщение об ошибке, когда для моего setup.py файла импортируются следующие файлы:

from distutils.core import setup

Когда я использую это, я получаю предупреждения, такие как

/ usr / local / Cellar / python / 2.7.11 / Frameworks / Python.framework / Versions / 2.7 / lib / python2.7 / distutils / dist.py: 267: UserWarning: неизвестная опция распространения: 'entry_points' warnings.warn (МСГ)

Если я изменю импорт (и ничего больше ) на следующее:

from distutils.core import setup
import setuptools  # noqa

Предупреждения уходят.

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

Понятно, что происходит какая-то мартышка, и на нее влияет то, выполняется ли этот импорт. Вероятно, это не ситуация для всех, кто исследует эту проблему, но для узкой среды, в которой я работаю, это ответ, который я искал.


Это согласуется с другим (сообществом) комментарием, в котором говорится, что distutils должен устанавливать monkeypatch setuptools, и что у них возникла проблема при установке Ansible. Похоже, что Ansible пытался разрешить установку без использования setuptools в прошлом, а затем вернулся к этому.

https://github.com/ansible/ansible/blob/devel/setup.py

В воздухе много чего ... но если вы ищете простой ответ для простого проекта, вам, вероятно, стоит просто импортировать setuptools.

7 голосов
/ 28 ноября 2011

Это предупреждение от distutils и признак того, что у вас не установлен setuptools. Установка его из http://pypi.python.org/pypi/setuptools удалит предупреждение.

4 голосов
/ 17 июля 2017
sudo apt-get install python-dev  # for python2.x installs
sudo apt-get install python3-dev  # for python3.x installs

Он установит все недостающие заголовки Это решило мою проблему

2 голосов
/ 02 июля 2013

Насколько я могу судить, это ошибка в setuptools, когда она не удаляет определенные параметры setuptools перед вызовом базового класса в стандартной библиотеке: https://bitbucket.org/pypa/setuptools/issue/29/avoid-userwarnings-emitted-when-calling

Если у вас есть import setuptools в вашем setup.py (как и при использовании определенных параметров setuptools), то тот факт, что скрипт не завершается с ImportError, указывает на то, что setuptools установлен правильно.

Вы можете отключить предупреждение следующим образом:

python -W ignore::UserWarning:distutils.dist setup.py <any-other-args>

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

(Такое же поведение я наблюдаю при извлечении из репозитория setuptools после слияния, поэтому я уверен, что это ошибка setuptools, а не проблема конфигурации системы. Я ожидаю, что дистрибутив перед слиянием будет таким же проблема)

...