Невозможно обновить пакет 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 по умолчанию.
Я решил проблему следующим способом.
- Загрузите пакет six-1.10.0.tar.gz
- Используйте эту команду для установки.
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 шесть
Попробуйте эти шаги
Переустановите Python, используя Brew
$ brew install python
Решить пропущенную проблему символической ссылки
$ brew link --overwrite python
Перезагрузите систему или запустите
$ hash -r python
Хотя одно или другое из перечисленных выше решений может работать для вас, я думаю, что важно понять, что происходит и какие варианты у вас есть. Я нашел это (довольно длинное) описание очень полезным: оно начинается с описания вариантов и только затем предлагает решения.
В конце концов, проблема для меня заключалась в том, что я использовал оболочку IPython.
which ipython
возвращенный /usr/local/bin/ipython
и после проверки этот файл объявлен в верхней #!/usr/bin/python
который, казалось, обошел все мои усилия, чтобы использовать правильное расположение Python.
Просто изменив эту строку #!/usr/local/bin/python
чтобы указать на правильную версию Python, значит IPython использовал правильную six
модуль.