Правильное определение PATH для Python после установки MacPorts

Правильное определение PATH для Python после установки MacPorts

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

работают просто отлично.

Связанный контент