Obtener la RUTA correcta para Python después de la instalación de MacPorts

Obtener la RUTA correcta para Python después de la instalación de MacPorts

No puedo importar algunas bibliotecas de Python (PIL, psycopg2) que acabo de instalar con MacPorts. Revisé estos foros e intenté ajustar mi PATHvariable para ~/.bash_profilesolucionar este problema, pero no funcionó.

Agregué la ubicación de PIL y psycopg2 a PATH.
Sé que Terminal está usando una versión de Python en /usr/local/binlugar de la instalada por MacPorts en /opt/local/bin.

¿Necesito usar la versión MacPorts de Python para asegurarme de que PIL y psycopg2 estén en sys.path cuando uso Python en la Terminal? ¿Debo cambiar a la versión MacPorts de Python o eso causará más problemas?

Por si te resulta útil, aquí tienes más datos:

PIl y psycopg2 están instalados en/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages

which pythondevoluciones/usr/bin/python

$ echo $PATHdevuelve (separé cada ruta para facilitar la lectura):

:/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

en Python, >>> sys.pathdevuelve:

/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

Acepto cualquier crítica y comentario, si alguno de los anteriores parece tonto o mal concebido. Soy nuevo en todo esto. ¡Gracias!

Ejecutando OSX 10.6.5 en una MacBook Pro, invocando Python 2.6.1 desde la Terminal

Respuesta1

Utilice el comando 'notas' después de instalar Python (cambie python26 a la versión que haya instalado):

$ port notes python26

Verás algunas variaciones en las recomendaciones posteriores a la instalación:

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

Debe instalar python_selecty luego seleccionar python26Python como predeterminado. Entonces, si realmente instaló PIL y pyscopg2 usando MacPorts (es decir, algo como port install py26-psycopg2 py26-pil), entonces no debería tener que especificarcualquier cosaen PYTHONPATH. Tampoco es necesario agregar los /opt/local/Library/Frameworks/…directorios a su archivo PATH. Después de hacer esto, which pythondebería regresar /opt/local/bin/python. Los puertos de Python instalados por MacPorts /opt/local/Library/Frameworks/Python.frameworkya están en sys.pathMacPorts Python. No los encontraste antes porque estabas usando System Python (es decir /usr/bin/python), que no tiene conocimiento de los paquetes MacPorts Python.

Respuesta2

IpensarDescubrí la respuesta a mi pregunta. Edité mi archivo ~/.bash_profile para incluir

export PYTHONPATH=

y luego agregué todas las rutas existentes en 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:

y luego agregué las rutas a los directorios donde MacPorts instaló cosas:

/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:

ahora, cuando imprimo sys.path, se incluyen las rutas a los directorios de instalación de 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

Ahora

>>> import PIL

y

>>> import psycopg2

funciona bien.

información relacionada