Проблема установки Python в Mac OS X
Я использовал стандартный python, который поставляется с OS X Lion (2.7.2), но я хотел создать версию UCS-4 для лучшей обработки 4-байтовых символов Юникода.
Я уже установил pip и пакеты, такие как pytz, virtualenv, virtualenvwrapper и т. Д., И они установлены в /Library/Python/2.7/site-packages
, мой $PATH
является /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
,
Чтобы собрать новую версию python на компьютере (за исключением каких-либо виртуальных сред, специфичных для проекта, которые появятся позже), я следовал инструкциям, приведенным в этой статье, и мне удалось собрать ее в /usr/local/bin
, Проблема в том, что когда я запустил новое окно bash, я получил следующую ошибку virtualenvwrapper:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is set properly.
В инструкции сказано переехать /usr/local/bin
к вершине /etc/paths
файл, и с тех пор я заметил некоторые странные проблемы. Я установил пип в /usr/local/bin
и теперь я предположил, что, так как я работаю в /usr/local/bin
и недавно установленные пакеты сайта Python находятся в /usr/local/lib/python2.7/site-packages
, когда я делаю pip freeze
, он должен быть пустым, так как там еще ничего не установлено. Тем не мение, pip freeze
все еще сообщает вещи, установленные в старой (OS X) папке site-packages. Вот некоторая информация после сборки:
$ which python
/usr/local/bin/python
$ which pip
/usr/local/bin/pip
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Когда я удаляю пакет python с помощью pip, он удаляет его из старой папки site-packages, как и ожидалось. Когда я устанавливаю это снова, вместо того, чтобы устанавливать это в /usr/local/lib/python2.7/site-packages
, он устанавливает его в /Library/Python/2.7/site-packages
(подтверждено попыткой установить его снова и получить Requirement already satisfied (use --upgrade to upgrade): pytz in /Library/Python/2.7/site-packages
). Как он получает этот путь для старой папки site-packages? Почему он не установит его в правильном месте для установленного Python?
Я получаю несколько других вопросов, так как продвижение /usr/local/bin
но я думаю, что если я пойму это, я смогу куда-нибудь добраться.
Кто-нибудь может увидеть, что происходит? Если вам нужна дополнительная информация, я буду рад предоставить ее.
1 ответ
Оказалось, что Шебанг в /usr/local/bin/pip
было #!/usr/bin/python
, Так что pip использовал не тот python и, следовательно, неправильную папку site-packages.
В итоге я вытер большую часть того, что сделал, и использовал pythonbrew для установки нового python, а затем начал с нуля.