Я использовал стандартный питон, который поставляется с 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 для установки нового питона, а затем начал с нуля.