No puedo importar algunas bibliotecas de Python (PIL, psycopg2) que acabo de instalar con MacPorts. Revisé estos foros e intenté ajustar mi PATH
variable para ~/.bash_profile
solucionar 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/bin
lugar 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 python
devoluciones/usr/bin/python
$ echo $PATH
devuelve (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.path
devuelve:
/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_select
y luego seleccionar python26
Python 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 python
debería regresar /opt/local/bin/python
. Los puertos de Python instalados por MacPorts /opt/local/Library/Frameworks/Python.framework
ya están en sys.path
MacPorts 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.