Я не могу импортировать некоторые библиотеки python (PIL, psycopg2), которые я только что установил с MacPorts. Я просмотрел эти форумы и попытался настроить свою PATH
переменную, чтобы ~/.bash_profile
исправить это, но это не сработало.
Я добавил расположение PIL и psycopg2 в PATH
.
Я знаю, что Terminal использует версию python в , /usr/local/bin
а не ту, которая установлена MacPorts в /opt/local/bin
.
Нужно ли мне использовать версию Python MacPorts, чтобы гарантировать, что PIL и psycopg2 находятся в sys.path, когда я использую python в Terminal? Стоит ли мне переключиться на версию Python MacPorts, или это вызовет больше проблем?
Если это будет полезно, вот еще факты:
PIl и psycopg2 установлены в/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
which python
возвращается/usr/bin/python
$ echo $PATH
возвращает (я разделил каждый путь для удобства чтения):
:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/
:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
:/opt/local/bin
:/opt/local/sbin
:/usr/local/git/bin
:/usr/bin
:/bin
:/usr/sbin
:/sbin
:/usr/local/bin
:/usr/local/git/bin
:/usr/X11/bin
:/opt/local/bin
в питоне >>> sys.path
возвращает:
/Library/Frameworks/SQLite3.framework/Versions/3/Python
/Library/Python/2.6/site-packages/numpy-override
/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages
/Library/Frameworks/cairo.framework/Versions/1/Python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
/Library/Python/2.6/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode
Я приветствую любую критику и комментарии, если что-то из вышеперечисленного выглядит глупым или плохо продуманным. Я новичок во всем этом. Спасибо!
Запуск OSX 10.6.5 на MacBook Pro, вызов Python 2.6.1 из Терминала
решение1
Используйте команду «notes» после установки Python (измените python26 на ту версию, которую вы установили):
$ port notes python26
Вы увидите некоторые изменения в рекомендациях после установки:
python26 has the following notes:
To fully complete your installation and make python 2.6 the default, please
run:
sudo port install python_select
sudo port select python python26
Вам следует установить python_select
и затем выбрать python26
Python по умолчанию. Затем, если вы действительно установили PIL и pyscopg2 с помощью MacPorts (т.е. что-то вроде port install py26-psycopg2 py26-pil
), то вам не нужно указыватьчто-либов PYTHONPATH
. Вам также не нужно добавлять каталоги /opt/local/Library/Frameworks/…
в ваш PATH
. После этого which python
должно вернуться /opt/local/bin/python
. Порты Python, установленные MacPorts в , /opt/local/Library/Frameworks/Python.framework
уже находятся в sys.path
для MacPorts Python. Вы не нашли их ранее, потому что использовали System Python (т. е. /usr/bin/python
), который не имеет знаний о пакетах MacPorts Python.
решение2
ядуматьЯ нашел ответ на свой вопрос. Я отредактировал файл ~/.bash_profile, включив в него
export PYTHONPATH=
и затем я добавил все существующие пути в sys.path
:
export PYTHONPATH=/Library/Frameworks/SQLite3.framework/Versions/3/Python:/Library/Python/2.6/site-packages/numpy-override:/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages:/Library/Frameworks/cairo.framework/Versions/1/Python:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages:/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload:/Library/Python/2.6/site-packages:/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC:/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages:
а затем я добавил пути к каталогам, куда MacPorts установил все необходимое:
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages:
Теперь, когда я печатаю sys.path, включаются пути к каталогам установки MacPorts:
/Library/Frameworks/SQLite3.framework/Versions/3/Python
/Library/Python/2.6/site-packages/numpy-override
/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages
/Library/Frameworks/cairo.framework/Versions/1/Python
/Library/Frameworks/SQLite3.framework/Versions/3/Python
/Library/Python/2.6/site-packages/numpy-override
/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages
/Library/Frameworks/cairo.framework/Versions/1/Python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
/Library/Python/2.6/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
Сейчас
>>> import PIL
и
>>> import psycopg2
работают просто отлично.