Проблема установки 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, а затем начал с нуля.

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