Назад | Перейти на главную страницу

Проблема с установкой Python в Mac OS X

Я использовал стандартный питон, который поставляется с 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 файл, и с тех пор я заметил некоторые странные проблемы. Я установил pip в /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, он удаляет его из старой папки пакетов сайта, как и ожидалось. Когда я устанавливаю его снова, вместо того, чтобы устанавливать его в /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 ). Как получить этот путь к старой папке пакетов сайтов? Почему он не установит его в правильное место для используемой им установки python?

У меня возникли другие проблемы с момента продвижения /usr/local/bin но я думаю, что если я это пойму, то смогу куда-нибудь добраться.

Кто-нибудь может увидеть, что происходит? Если вам понадобится дополнительная информация, я буду рад ее предоставить.

Оказалось, что шебанг в /usr/local/bin/pip был #!/usr/bin/python. Таким образом, pip использовал неправильный питон и, следовательно, неправильную папку пакетов сайта.

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