Что означает" ошибка: опция --single-version-external-managed not recognized"?


кажется, я внезапно начал сталкиваться с ошибкой error: option --single-version-externally-managed not recognized, когда pip install ING varions пакеты (в том числе PyObjC и astropy). Я никогда не видел эту ошибку раньше, но теперь она также появляется на сборках travis-ci, для которых ничего не изменилось.

указывает ли эта ошибка на устаревшее распространение? Или какой-то неверно указанный параметр в setup.py? Или что-то совсем другое?

6 80

6 ответов:

Обновление:

установите последнюю версию setuptools. Если вы все еще получаете сообщение об ошибке, установите wheel Как хорошо.

pip install -U setuptools
pip install -U wheel

Оригинальный Ответ / Подробнее:

--single-version-externally-managed - это опция, используемая для пакетов Python, инструктирующая модуль setuptools создавать пакет Python, который при необходимости может легко управляться менеджером пакетов хоста, например Yum или Apt.

если вы видите это сообщение, у вас может быть старая версия setuptools или Python. Попробуйте использовать Distribute, который является более новой версией setuptools и обратно совместим. Эти пакеты могут ожидать, что у вас уже есть.

https://pypi.python.org/pypi/distribute

Edit: на данный момент distribute был объединен в main . Просто установите последнюю версию setuptools. Как указано в @wynemo, вы можете использовать вместо этого, как это больше подходит для тех, кто выполняет ручную установку, где вы не собираетесь создавать системный пакет для распространения.

добавить --egg опции

pip install --egg SCons

Я использую pip версия 1.4.1

установка wheel решена эта проблема с недавним pip (я использовал 8.1.2):

pip install wheel

попробуйте обновить setuptools следующим образом:

pip install --upgrade setuptools

у меня была эта проблема. Оказалось, что это была проблема с правами доступа к файлам в моем кеше pip.

Если вы видите сообщение в самом начале вашего вывода pip, как

The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

у вас может быть такая же проблема. Вы можете решить это, либо гарантируя, что у вас есть соответствующие разрешения на файл в вашем кэше pip (что-то вроде chown -R $(whoami) /home/ubuntu/.cache/pip) или, если вы находитесь в UNIX, вы можете установить местоположение кэша pip с помощью XDG_CACHE_HOME env var в какую-то папку, которой вы владеете.

У меня есть эта проблема на моем macbook также, когда я пытаюсь обновить один пакет python. Я проверяю версию pip в OS X, она слишком старая: 1.1. Я использую follow cmd для обновления pip до 1.5.6

easy_install -U pip

затем эта ошибка исправлена.