Кто-нибудь сталкивается с этим предупреждением при выполнении python setup.py install
пакета PyPI?
install_requires
определяет, что требуется пакету. Многие пакеты PyPI имеют эту опцию. Как это может быть "неизвестный вариант распространения"?
Кто-нибудь сталкивается с этим предупреждением при выполнении python setup.py install
пакета PyPI?
install_requires
определяет, что требуется пакету. Многие пакеты PyPI имеют эту опцию. Как это может быть "неизвестный вариант распространения"?
python setup.py
использует distutils, который не поддерживает install_requires. setuptools делает, а также Distributed (его преемник) и pip (который использует любой из них). Но на самом деле вы должны использовать их. т.е. вызвать setuptools через команду easy_install
или pip install
.
Другой способ — импортировать установку из setuptools в ваш setup.py, но это нестандартно и заставляет всех, кто хочет использовать ваш пакет, установить setuptools.
pip
, тогда как мне запустить файл setup.py
, если я хочу только построить расширение на месте?
- person Fred Foo; 24.05.2012
python setup.py sdist
и установить его с помощью pip install resulting_package.tar.gz
. Вы также можете использовать pip install -e
для установки непосредственно из исходного кода, но я всегда предпочитал устанавливать напрямую из пакета или из репозитория.
- person Sebastian Blask; 24.05.2012
pip install pendulum==1.4.4
. Запуск pip install setuptools --upgrade
устранил ошибку.
- person Throw Away Account; 02.05.2019
Это был первый результат моего поиска в Google, но ответа не было. Я обнаружил, что обновление setuptools решило проблему для меня (и для хорошей меры)
pip install --upgrade pip
pip install --upgrade setuptools
Надеюсь, это поможет следующему человеку найти эту ссылку!
pip3 install neovim-remote
.)
- person Michael Iles; 10.12.2018
Я на Mac с питоном 2.7.11. Я играл с созданием чрезвычайно простых и прямолинейных проектов, где мое единственное требование состоит в том, чтобы я мог запустить python setup.py install
, а setup.py
использовать команду установки, в идеале из 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, и что у них возникла проблема при установке Ansible. В прошлом Ansible пытался разрешить установку без инструментов настройки, а затем вернулся к этому.
https://github.com/ansible/ansible/blob/devel/setup.py
Многое витает в воздухе... но если вы ищете простой ответ для простого проекта, вам, вероятно, следует просто импортировать setuptools.
import setuptools
также чудесным образом решило проблему для меня в Ubuntu 16.04 с Python 3.5.
- person kuropan; 24.01.2019
ВНИМАНИЕ! ВНИМАНИЕ! Несовершенный ответ впереди. Чтобы получить «последнюю заметку» о состоянии упаковки во вселенной Python, прочитайте это довольно подробное эссе.
Я только что столкнулся с этой проблемой при попытке собрать/установить ansible. Проблема в том, что distutils действительно не поддерживает install_requires . Setuptools должны обезьяна-патч 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 сам предоставляется distribute, и этот вариант setup() поддерживает install_requires.
setuptools
и distribute
находятся в процессе объединения, но слияние еще не завершено (я обновлю это эссе, как только как это меняется). Кто-нибудь знает, как обстоят дела на 2019 год? Поскольку дата окончания жизни Python 2.7 быстро приближается, многие пакеты Python будут находиться в процессе обновления и переупаковки.
- person TrinitronX; 01.10.2019
Это предупреждение от distutils и признак того, что у вас не установлены setuptools. Установка с сайта http://pypi.python.org/pypi/setuptools удалит предупреждение.
setuptools
из исходного кода после установки pip uninstall setuptools
. Вместо этого выполните python setup.py install
для setuptools
, пока setuptools
еще установлен.
- person Ioannis Filippidis; 25.01.2016
В заключение:
distutils
не поддерживает install_requires
или entry_points
, setuptools
поддерживает.
измените from distutils.core import setup
в setup.py на from setuptools import setup
или реорганизуйте файл setup.py, чтобы использовать только distutils
функции.
Я пришел сюда, потому что не знал, что entry_points
— это всего лишь функция setuptools
.
Если вы хотите преобразовать setuptools
в distutils
, как я:
install_requires
из setup.py и просто используйте requirements.txt с pip
entry_points
на scripts
(doc) и реорганизуйте все модули, полагающиеся на entry_points
должны быть полноценные скрипты с шебангами и точкой входа.sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
Он установит все недостающие заголовки. Это решило мою проблему
Насколько я могу судить, это ошибка в 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, а не проблема с конфигурацией системы. Я ожидаю, что распространение перед слиянием будет иметь ту же проблему)
Теперь я видел это в устаревших инструментах, использующих Python 2.7, где сборка (например, Dockerfile) устанавливает незакрепленную зависимость, например pytest. PyTest прекратил поддержку Python 2.7, поэтому вам может потребоваться указать версию ‹ нового выпуска пакета.
Или стисните зубы и преобразуйте это приложение в Python 3, если это целесообразно.
Он отлично работает, если вы следуете официальной документации:
import setuptools
setuptools.setup(...)
Источник: https://packaging.python.org/tutorials/packaging-projects/#creating-setup-py
import setuptools; setuptools.setup()
. См.: packaging.python.org/tutorials/packaging-projects/< /а> - person guettli   schedule 10.09.2020