Невозможно обновить пакет Python шесть в Mac OSX 10.10.2

Я пытаюсь установить последнюю версию пакета из шести Python, но у меня есть следующие проблемы. Не могу избавиться от шести 1.4.1 в Mac OSX 10.10.2

sudo pip install six --upgrade
Requirement already up-to-date: six in /Library/Python/2.7/site-packages
Cleaning up...

pip search six
six - Python 2 and 3 compatibility utilities
INSTALLED: 1.9.0 (latest)

python -c "import six; print six.version"
1.4.1

which -a python
/usr/bin/python
which -a pip
/usr/local/bin/pip

Что здесь не так? Не могу обновить шесть!

10 ответов

Решение

Python для Mac OS X по умолчанию устанавливается как фреймворк. В каталоге framework есть каталог Extras и six пакет уже размещен там.

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py

Согласно описанию ( https://github.com/MacPython/wiki/wiki/Which-Python), /System/Library/Frameworks/Python.framework/Versions/2.7/Extras указан ранее /Library/Python/2.7/site-packages в модуле поиска пути. Это означает, что все пакеты уже существуют в /System/Library/Frameworks/Python.framework/Versions/2.7/Extras не могу обновить.

Возможно, вам следует установить Python вручную и не использовать Python по умолчанию.

Я решил проблему следующим способом.

  1. Загрузите пакет six-1.10.0.tar.gz
  2. Используйте эту команду для установки.

python setup.py install

Это работает, потому что он устанавливает новую версию из шести в /Library/Python/2.7/site-packages/, который ищется до /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/

Ваш pip бинарный принадлежит /usr/local/bin/python, в то время как python указывает на /usr/bin/python, Как следствие

pip install --upgrade six

установит в /usr/local/bin/python,

Команда ниже убедится, что используется правильная версия pip:

python -m pip install --upgrade six

Для меня просто с помощью доморощенного все исправлено.

brew install python

То, что работало для меня, было использовать easy_install вместо pip,

easy_install -U six

Easy_install удалось обновить пакет даже в случае сбоя pip.

Я столкнулся именно с этой проблемой при использовании pip для установки клиента openstack. Я решил использовать easy_install вместо pip, так как он использует /Library/Python/2.7/site-packages/ для установки модуля вместо /System/Library/Frameworks/Python.framework/Versions/2.7/Extras, Если этот обходной путь не подходит для вас, я могу подтвердить, что @Masakazu Matsushita имеет правильный обходной путь настройки PYTHONPATH в /Library/Python/2.7/site-packages, Чтобы реализовать этот обходной путь, добавьте эту строку:

export PYTHON_PATH=/Library/Python/2.7/site-packages

на ваш ~/.bashrc а также ~/.profile (если это приложение Python с графическим интерфейсом, которое вы пытаетесь установить).

Попробуйте с pip2 его работу для меня pip2 установить -U шесть

Попробуйте эти шаги

  1. Переустановите Python, используя Brew

    $ brew install python

  2. Решить пропущенную проблему символической ссылки

    $ brew link --overwrite python

  3. Перезагрузите систему или запустите

    $ hash -r python

Хотя одно или другое из перечисленных выше решений может работать для вас, я думаю, что важно понять, что происходит и какие варианты у вас есть. Я нашел это (довольно длинное) описание очень полезным: оно начинается с описания вариантов и только затем предлагает решения.

В конце концов, проблема для меня заключалась в том, что я использовал оболочку IPython.

which ipython возвращенный /usr/local/bin/ipython и после проверки этот файл объявлен в верхней #!/usr/bin/pythonкоторый, казалось, обошел все мои усилия, чтобы использовать правильное расположение Python.

Просто изменив эту строку #!/usr/local/bin/python чтобы указать на правильную версию Python, значит IPython использовал правильную six модуль.

Другие вопросы по тегам