Сбой установки Python: неверная команда egg_info
Я часто нахожу это в последнее время, когда пытаюсь установить пакет Python, используя pip , я получаю сообщения об ошибках ниже.
В Интернете я нашел ссылку на то, что нужно использовать « python2 setup.py install » из каталога загрузки, и действительно обнаружил, что это будет работать, если я вручную найду и скачу пакет (из pypi).
Но я не знаю, куда pip загружает пакеты и / или почему он не работает таким образом.
Я попытался выполнить обновление pip, но оно также не удалось аналогичным образом, с кучей ошибок «Неизвестная опция распространения» (entry_points, zip_safe, test_suite, tests_require)!
- пип 1.0.1 2.7
Попытка использовать pypm ActiveState не удалась, потому что они имеют меньшую библиотечную базу и не включают эти пакеты.
14 ответов
Установите распространять, который поставляется с egg_info .
Должно быть так же просто, как pip install Distribute .
Распространение было объединено с Setuptools, начиная с версии 0.7. Если вы используете версию pip install —upgrade setuptools или easy_install -U setuptools .
Ничто из перечисленного не помогло мне в Ubuntu 12.04 LTS ( Точный панголин), и вот как я это исправил в итоге:
Загрузите ez_setup.py с загрузите setuptools (см. «Инструкции по установке»). раздел) тогда:
Надеюсь, это кому-то сэкономит время.
Имейте в виду, что вам, возможно, придется сделать pip install —upgrade Distribute , если он уже установлен, и ваш pip может называться pip2 для Python2 в некоторых системах (он у меня).
Для меня обновление pip с 8.1.1 до 9.0.1 решило эту проблему.
Вы можете запустить что-то вроде sudo -H pip2 install —upgrade pip , чтобы обновить версию вашего пипса.
pip install -U setuptools и easy_install помещали информацию о яйцах в неправильный каталог.
Тогда я просто переустановил apt-get install python-dev . Позвольте мне установить драйверы, которые я хочу после этого
Я также встречаю подобное сообщение об ошибке «Сбой команды« python setup.py egg_info »с кодом ошибки 1» когда я хочу установить cairosvg с командой pip install cairosvg в виртуальной среде.
Затем я попробовал оба pip install —upgrade pip и pip install —upgrade setuptools перед запуском pip3 install cairosvg , но я все еще получаю эту ошибку.
Я могу избавиться от этой ошибки с помощью sudo перед командой установки: sudo pip install cairosvg . Но обратите внимание, что команда с sudo установит пакет для системного Python, а не для виртуальной среды.
Итак, я дополнительно проверяю сообщение об ошибке и обнаруживаю, что получаю ошибку при установке cairocffi . Затем я устанавливаю определенную версию cairocffi (см. Этот ответ) перед установкой cairosvg. Вот так я решаю свою проблему.
Поскольку дистрибутив был объединен с setuptools, теперь рекомендуется вместо этого установить / обновить setuptools:
Эта ошибка может возникнуть при попытке установить pycurl .
В этом случае вы должны сделать
У меня была эта проблема, а также некоторые другие проблемы с Brewed Python в OS X v10.9 ( Маверикс).
У меня не сработало, и я думаю, что мои настройки / распространение дистрибутива были испорчены.
Я наконец получил его на работу, запустив
На CentOS 6.5 краткий ответ от чистой установки:
yum -y install python-pip pip install -U pip pip install -U setuptools pip install -U setuptools
Вы не видите двойной, вы должны запустить обновление setuptools дважды. Длинный ответ ниже:
Установка пакета python-pip с использованием yum приводит к python-setuptools зависимости. Это довольно старая версия и, следовательно, она фактически устанавливает distribute (0.6.10) . После установки менеджера пакетов мы обычно хотим обновить его, поэтому мы делаем pip install -U pip . Текущая версия pip для меня — 1.5.6.
Теперь мы переходим к обновлению setuptools, и эта версия pip достаточно умна, чтобы знать, что сначала она должна удалить старую версию дистрибутива. Он делает это, но затем вместо установки последней версии setuptools устанавливает setuptools (0.6c11) .
В этот момент все вещи ломаются из-за этой чрезвычайно старой версии setuptools, но мы на самом деле на полпути. Если мы сейчас выполним ту же самую команду во второй раз, pip install -U setuptools , старая версия setuptools будет удалена, и будет установлена версия 5.5.1. Я не знаю, почему Пип не приводит нас прямо к новой версии за один раз, но это то, что происходит, и, надеюсь, это поможет другим увидеть это и понять, что вы не сходите с ума.
Я столкнулся с той же самой проблемой, и я попробовал все вышеупомянутые ответы. Но, к сожалению, ничего из вышеперечисленного не сработало.
Как примечание, я наконец решаю это pip uninstall distribute .
Похоже, что по умолчанию easy_install не работает в своем текущем местоположении:
$ which easy_install /usr/bin/easy_install
Чтобы преодолеть это, используйте easy_install в пакетах сайта. Например:
$ sudo python /Library/Python/2.7/site-packages/easy_install.py boto
Попробуйте следующую команду:
Я просто конвертирую ответ liquidki в команды Ubuntu. В системе на основе Ubuntu это работает !:
Точки входа в Python
Многие думают, что точки входа это такие инструкции в setup.py, которые позволяют сделать пакет доступным для запуска из командной строки. Это, в целом, верно, но возможности точек входа не ограничиваются этим.
Ниже я покажу как можно реализовать систему плагинов для пакета, чтобы другие люди могли с ним взаимодействовать или, например, расширять его функциональность динамически.

Осторожно: специфический юмор далее по тексту.
ООО «Змейка»
Поздравляю! Вас только что назначили главой ООО «Змейка». Это очень ответственная должность, ударить в грязь лицом нельзя, а значит, нужно как можно скорее дать указание отделу разработки приступить к созданию прототипа продукта. И вот, лучшие умы компании начинают работу над snek.py:
Чуть позже, на собрании акционеров вы с гордостью демонстрируете первые результаты!
Змейка как сервис
К сожалению, рядовой потребитель пока ещё не освоил Python и хочет запускать программу из консоли, не думая об интерпретаторе или местоположении snek.py. Что ж, наши лучшие специалисты на то и лучшие, что смогли запаковать скрипт так, чтобы он автоматически создавал консольную команду при установке.
Для создания распространяемого пакета нам нужен файл setup.py, где содержится информация о зависимостях, лицензии и т.д. Помимо этого, в нём можно указать точки входа:
console_scripts, как пояснили специалисты, специальная точка входа. setuptools читает её элементы как «<консольный скрипт> = <путь к питоновскому объекту>», создавая для каждого элемента консольную утилиту при установке пакета.
Пока что давайте установим скрипт из исходников:
На конференции, посвящённой итогам года, вы выступаете, демонстрируя новейшую разработку:
Змейка в каждый дом
Змейка завоёвывает мир. Компания провела IPO и была оценена в рекордные 60 миллиардов долларов. Хипстеры требуют новую, стильную, модную и молодёжную змейку. А раз есть спрос, будет и предложение:
Хипстеры в восторге:
Транснациональная Змейка
Миллионы человек не мыслят свой день без змейки. Даже после поглощения Гугла ресурсов ООО «Змейка» не хватает, чтобы удовлетворять потребности пользователей по всему миру. Похоже настало время дать людям возможность создавать собственных змеек на базе нашей инфраструктуры.
Теперь, каждый раз когда snek запущена, она ищет других зарегистрированных в системе змеек, используя точку входа snek_types. Каждая такая змейка зарегистрирована под названием её типа, что позволяет выбирать нужную змейку в зависимости от параметров консоли.
Всё самое главное происходит внутри get_sneks. Вызов pkg_resources.iter_entry_points(‘snek_types’) позволяет пройтись по всем точкам входа, зарегистрированным под именем «snek_types» где-либо. Таким образом, любой сторонний пакет сможет в своём setup.py создать точку входа «snek_types», чтобы быть загруженным нашим скриптом.
Мы рассказали о «snek_types» нашим коллегам из ООО «Змеиные решения», и они тут же начали создавать змейку своей мечты. Вот каким получился их пакет cute_snek.py:
А вот как они реализовали свой setup.py, чтобы наша snek могла загрузить их змейку:
Они зарегистрировали переменную cute_snek в модуле cute_snek под именем cute. Далее они устанавливают пакеты snek и cute_snek:
Теперь, запустив snek, они могут вывести свою змейку из пакета cute_snek за счёт её динамической загрузки по точке входа:
Змейка 2.0
Пока всё внимание высшего руководства уходит на разборки с налоговой инспекцией и антимонопольной службой, отдел разработки наконец-то может выкроить немного времени на рефакторинг кода.
Главный системный архитектор понял, что если сторонние змейки могут быть загружены как плагины, значит, так же могут быть загружены и встроенные змейки.
Уберём особую обработку встроенных змеек:
И взамен зарегистрируем для них универсальные точки входа:
Переустановим изменённую змейку:
На этом всё. Теперь вы знаете, как использовать точки входа в Python!
Your access to this site has been limited by the site owner
If you think you have been blocked in error, contact the owner of this site for assistance.
If you are a WordPress user with administrative privileges on this site, please enter your email address in the box below and click "Send". You will then receive an email that helps you regain access.
Block Technical Data
| Block Reason: | Access from your area has been temporarily limited for security reasons. |
|---|---|
| Time: | Mon, 13 Jun 2022 23:49:19 GMT |
About Wordfence
Wordfence is a security plugin installed on over 4 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.
You can also read the documentation to learn about Wordfence's blocking tools, or visit wordfence.com to learn more about Wordfence.
Click here to learn more: Documentation
Generated by Wordfence at Mon, 13 Jun 2022 23:49:19 GMT.
Your computer's time: .