Помилка установки Python pip: недійсна команда egg_info


205

Я вважаю, що останнім часом часто, намагаючись встановити пакет Python за допомогою pip , я отримую помилки нижче.

В Інтернеті я знайшов довідку про те, що треба використовувати " python2 setup.py install " з каталогу завантажень, і дійсно виявив, що це буде спрацьовувати, якщо я вручну знайду і завантажую пакет (з pypi).

Але я не знаю, куди pip завантажує пакунки та / або чому вона не працює таким чином.

Я спробував здійснити оновлення піп, але це також не вдалося подібним чином, з купою помилок "Невідомий параметр розподілу" (entry_points, zip_safe, test_suite, testing_require)!

Спроба використовувати pypm ActiveState не вдається, оскільки у них менша база бібліотеки, і вона не включає ці пакети.

C:\test>pip install requests-oauth
Downloading/unpacking requests-oauth
  Downloading requests-oauth-0.4.1.tar.gz
  Running setup.py egg_info for package requests-oauth
    E:\Plang\ActivePython\lib\distutils\dist.py:267: UserWarning: Unknown distribution option: 'zip_safe'
      warnings.warn(msg)
    E:\Plang\ActivePython\lib\distutils\dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
      warnings.warn(msg)
    usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
       or: -c --help [cmd1 cmd2 ...]
       or: -c --help-commands
       or: -c cmd --help

    error: invalid command 'egg_info'
    Complete output from command python setup.py egg_info:
    E:\Plang\ActivePython\lib\distutils\dist.py:267: UserWarning: Unknown distribution option: 'zip_safe'
  warnings.warn(msg)

E:\Plang\ActivePython\lib\distutils\dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
  warnings.warn(msg)

usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: -c --help [cmd1 cmd2 ...]
   or: -c --help-commands
   or: -c cmd --help

error: invalid command 'egg_info'

Для мене це спрацювало встановленняpython-dev
lmaooooo

Відповіді:


313

Встановіть дистрибутив , який постачається разом egg_info.

Повинно бути таким же простим, як pip install Distribute.

Поширення було об'єднано в Setuptools з версії 0.7. Якщо ви використовуєте версію <= 0,6, оновіть, використовуючи pip install --upgrade setuptoolsабо easy_install -U setuptools.


79
не працює для мене. Я розповсюдив установку, але все одно отримую помилку з інформацією про яйце майже кожного разу, коли намагаюся встановити пакет
Riot Goes Woof

2
Тим людям, як @Zorpix, які все-таки отримують помилки, ви можете перевірити, яку версію піп ви телефонуєте. У Ubuntu я виявив, що у мене є розфасована версія, яку все ще викликали.
Джеймс Снайдер

1
Щоб нова версія setuptools працювала, можливо, вам також доведеться видалити розповсюдження вручну або видаливши/usr/local/lib/python2.7/dist-packages/distribute-*
Michael

12
якщо у вас все-таки виникають проблеми після видалення дистрибутива чи pip, не налаштовано setuptools належним чином, спробуйте easy_install -U setuptoolsЦе працювало для мене.
kissgyorgy

5
Як не дивно, це виправило помилку для всіх установок, крім pip install -U pip .
Серін

58

Оскільки розподіл було об'єднано назад у setuptools, тепер рекомендується замість цього встановити / оновити setuptools:

[sudo] pip install --upgrade setuptools

7
З якоїсь причини мені довелося запустити це двічі (у своїй віртуальній середовищі я роздав 0.6.49 та setuptools 0.6c11), і тоді я міг без проблем встановити останню версію pip.
glarrain

3
@glarrain мені трапилось! дякую за голови вгору! перший прохід невстановленого розподілити 0,7, а другий Uninstalled Setuptools 0.6c11
авіаудар

22

Майте на увазі, що вам, можливо, доведеться це зробити, pip install --upgrade Distributeякщо він уже встановлений, і вам pipможуть бути викликані pip2Python2 в деяких системах (він у мене).


1
Як зауваження, це потрібно зробити в режимі адміністратора для Windows для типової установки Python. В іншому випадку не помітити помилку установки для Distribute.
Стівен Блаен

13

У мене була ця проблема, а також деякі інші проблеми з Brewed Python на OS X v10.9 (Mavericks).

sudo pip install --upgrade setuptools

не працювало для мене, і я думаю, що мої настройки setuptools / distribute були неполадки.

Я нарешті змусив його працювати, бігаючи

sudo easy_install -U setuptools

11

Ніщо з перерахованого вище не працювало для мене на Ubuntu 12.04 LTS (Precision Pangolin), і ось, як я це виправив у підсумку:

Завантажте ez_setup.py з програми завантаження (див. Розділ "Інструкції з установки"):

$ sudo python ez_setup.py

Я сподіваюся, що це економить когось деякий час.



8

У 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 встановлюємо. Я не знаю, чому піп не приводить нас безпосередньо до нової версії за один кадр, але це те, що відбувається, і, сподіваємось, це допоможе іншим побачити це і знати, що ти не зводиш з розуму.


6

Схоже, за умовчанням easy_install зламаний у своєму поточному місці розташування:

$ which easy_install /usr/bin/easy_install

Спосіб подолання цього полягає у використанні easy_install у пакунках сайтів. Наприклад:

$ sudo python /Library/Python/2.7/site-packages/easy_install.py boto


6

Я зіткнувся з тим же питанням, і я спробував усі вищевказані відповіді. Але, на жаль, жодне з перерахованого вище не спрацювало.

Як замітка, я нарешті вирішую це шляхом pip uninstall distribute.


3
Це вирішило для мене проблему. Виявилося, що у мене встановлено стару версію дистрибутива та встановлено ще старішу версію setuptools, яку віддають перевагу над новішими setuptools, встановленими моїм системним пакувачем ... Видалення обох setuptools та розповсюдження, а потім повторна інсталяція setuptools за допомогою мого системного пакета виправили проблему для мене.
Домінік Лобуе

5

Я знаю, що це старе питання, але ось етапи, якими я користувався, cassandra-driverщоб насправді встановити на Windows 7 / Python2. У мене є вікна 10 / Python3 вдома, де я тестую це сьогодні ввечері.Я підтвердив, що це працює і в Windows 10 з Python 2 і 3.

Проблема

Command "python setup.py egg_info" failed with error code 1 in c:\users\Frito\appdata\local\temp\pip-build-7dgmdc\cassandra-driver

TL; DR Рішення

Рішення (я б хотів, щоб хтось пояснив, чому це спрацювало)

  • Спробували pip install cassandra-driverі отримали вищезгадане повідомлення про помилку
  • Спробував pip install --pre cassandra-driverі отримав таку помилку
distutils.errors.DistutilsError: Setup script exited with error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat).
Get it from http://aka.ms/vcpython27

Command "c:\users\Frito\.virtualenvs\symdash\scripts\python.exe -u -c "import setuptools, tokenize;__file__='c:\\users\\Frito\\appdata\\local\\temp\\pip-build-sesxxu\\cassandra-driver\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record  c:\users\Frito\appdata\local\temp\pip-ujsxsk-record\install-record.txt --single-version-externally-managed --compile --install-headers c:\users\Frito\.virtualenvs\symdash\include\site\python2.7\cassandra-driver"  failed with error code 1 in  c:\users\Frito\appdata\local\temp\pip-build-sesxxu\cassandra-driver
  • Встановлено Microsoft Visual C++ Compiler for Python 2.7
  • Успішно виконано pip install --pre cassandra-driver
  • Успішно виконано pip uninstall cassandra-driver
  • Успішно виконано pip install cassandra-driver

Повторюся, я не дуже впевнений, чому це спрацювало. Наразі мої два основні висновки полягають у тому, що або потрібен компілятор C ++, або що запустивши --preопцію, вперше встановлено деякі залежності, яких не вистачало при "звичайній" установці. Я оновлю сьогодні ввечері після роботи, коли матиму більше деталей.


1

pip install -U setuptoolsі easy_installвводив яєчну інформацію в неправильний каталог.

Потім я просто перевстановився apt-get install python-dev. Дозвольте після цього встановити потрібні драйвери


1

спробуйте наступну команду:

pip install setuptools==28.8.0

0

Я просто перетворюю відповідь ліквідки в команди Ubuntu. У системі на базі Ubuntu він працює !:

sudo apt -y install python-pip
pip install -U pip
sudo pip install -U setuptools

0

Для мене оновлення піп з 8.1.1 до 9.0.1 вирішило цю проблему.

Ви можете запустити щось на кшталт sudo -H pip2 install --upgrade pipоновлення своєї версії pip.


0

Я також зустрічаю подібне повідомлення про помилку "Command" 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 встановить пакет для системного пітона, а не для віртуального середовища.

Отже, я додатково перевіряю повідомлення про помилку і виявляю, що я отримую помилку під час встановлення cairocffi . Потім я встановлюю певну версію cairocffi ( див. Цю відповідь ) перед установкою cairosvg. Саме так я вирішую свою проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.