Кто-нибудь сталкивался с этим предупреждением при выполнении python setup.py install
пакета PyPI?
install_requires
определяет, что требуется для пакета. Эта опция есть во многих пакетах PyPI. Как это может быть «неизвестный вариант распространения»?
Ответы:
python setup.py
использует distutils, который не поддерживает install_requires. setuptools также распространяет (его преемник) и pip (который использует любой из них) делает. Но на самом деле их нужно использовать. Т.е. вызываем setuptools черезeasy_install
команду илиpip install
.Другой способ - импортировать установку из setuptools в ваш setup.py, но это не стандартно и заставляет всех, кто хочет использовать ваш пакет, иметь установленные setuptools.
источник
pip
, тогда как мне запуститьsetup.py
файл, если я хочу только создать расширение на месте?python setup.py sdist
и установить его с помощьюpip install resulting_package.tar.gz
. Вы также можете использоватьpip install -e
для установки непосредственно из исходного кода, но я всегда предпочитал установку из пакета или напрямую из репозитория ..pip install pendulum==1.4.4
. Бегpip install setuptools --upgrade
устранил ошибку.Это был первый результат моего поиска в Google, но ответа не было. Я обнаружил, что обновление setuptools решило проблему для меня (и пип для хорошей меры)
Надеюсь, это поможет следующему человеку найти эту ссылку!
источник
pip3 install neovim-remote
.)ВНИМАНИЕ ! ВНИМАНИЕ ! Впереди несовершенный ответ. Чтобы получить «последнюю заметку» о состоянии упаковки во вселенной Python, прочтите это довольно подробное эссе. .
Я только что столкнулся с этой проблемой при попытке собрать / установить ansible. Проблема, похоже, в том, что distutils действительно не поддерживает install_requires. Инструменты настройки должны 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 сам предоставляется через distribute , и этот вариант setup () поддерживает install_requires.
источник
setuptools
иdistribute
проекты находятся в процессе слияния вместе, но слияние не завершено пока (я буду обновлять эту статью , как только что меняется) ". Кто-нибудь знает, как обстоят дела по состоянию на 2019 год? С приближением даты окончания срока службы Python 2.7 многие пакеты Python будут обновляться и переупаковываться.Я нахожусь на Mac с python 2.7.11. Я занимался созданием чрезвычайно простых и понятных проектов, где мое единственное требование - я мог запускать
python setup.py install
иsetup.py
использовать команду установки, в идеале из distutils. Буквально нет никакого другого импорта или кода, кроме kwargs,setup()
кроме того, что я здесь отмечу.Я получаю сообщение об ошибке, если импорт моего
setup.py
файла:Когда я использую это, я получаю такие предупреждения, как
Если я изменю импорт (и ничего больше ) на следующее:
Предупреждения исчезнут.
Обратите внимание, что я не использую
setuptools
, просто импортируя его, он меняет поведение, так что он больше не выдает предупреждения. Для меня это причина поистине сбивающей с толку разницы, когда некоторые проекты, которые я использую, выдают эти предупреждения, а некоторые нет.Ясно, что происходит некоторая форма обезьяньего исправления, и это зависит от того, выполнен ли этот импорт. Вероятно, это не подходит для всех, кто исследует эту проблему, но для узкой среды, в которой я работаю, это ответ, который я искал.
Это согласуется с другим комментарием (сообщества), в котором говорится, что distutils должен устанавливать monkeypatch setuptools, и что у них возникла проблема при установке Ansible. Похоже, что Ansible пытался разрешить установку без установки в прошлом, а затем вернулся к этому.
https://github.com/ansible/ansible/blob/devel/setup.py
Многое еще витает в воздухе ... но если вы ищете простой ответ для простого проекта, вам, вероятно, следует просто импортировать setuptools.
источник
import setuptools
также чудесным образом решило проблему для меня на ubuntu 16.04 с python 3.5.Это предупреждение от distutils и признак того, что у вас не установлены инструменты установки. При установке с http://pypi.python.org/pypi/setuptools предупреждение будет удалено.
источник
Он установит все недостающие заголовки. Это решило мою проблему
источник
В заключение :
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
проведите рефакторинг любых модулей, полагающихся на полные скрипты с shebangs и точкой входа.источник
Насколько я могу судить, это ошибка в setuptools, при которой не удаляются определенные параметры setuptools перед вызовом базового класса в стандартной библиотеке: https://bitbucket.org/pypa/setuptools/issue/29 / escape-userwarnings-emitted-when-call
Если у вас есть безусловное
import setuptools
в вашемsetup.py
(как и должно быть, если вы используете определенные параметры setuptools), то тот факт, что сценарий не дает сбоев,ImportError
указывает на то, что setuptools правильно установлен.Вы можете отключить предупреждение следующим образом:
Делайте это только в том случае, если вы используете безусловный импорт, который полностью завершится неудачно, если не установлены инструменты установки :)
(Я наблюдаю такое же поведение при оформлении заказа из репозитория setuptools после слияния, поэтому я уверен, что это ошибка setuptools, а не проблема конфигурации системы. Я ожидаю, что распространение до слияния будет иметь ту же проблему)
источник
Теперь я видел это в устаревших инструментах, использующих Python2.7, где сборка (например, Dockerfile) устанавливает незакрепленную зависимость, например pytest. PyTest отказался от поддержки Python 2.7, поэтому вам может потребоваться указать version <выпуск нового пакета.
Или прикусите пулю и конвертируйте это приложение в Python 3, если это возможно.
источник