Estoy haciendo un montón de desarrollo de python y también actualicé el sistema operativo a Mountain Lion.
Reemplacé las versiones originales de Python con Snow Leopard usando la GUI de Python.org, luego agregué enlaces en /usr/bin:
lrwxr-xr-x 1 root admin 71 Oct 22 18:12 python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Así que ahora tengo lo que creo que son todas las versiones de Python que forman parte de OSX 10.8.5 (2.5, 2.6, 2.7) ubicadas en:
/System/Library/Frameworks/Python.framework/Versions/
y enlazado desde/usr/bin
Y TAMBIÉN los que instalé con la GUI ubicada en:
/Library/Frameworks/Python.framework/Versions/
Pero planeo usar las versiones que instalo con fink
, que es un árbol de puertos similar al macports
que están/estarán ubicados en:
/sw/bin
Así que he comentado las PATH
exportaciones que ~/.bash_profile
apuntan a los ejecutables que no son fink:
#PATH="/usr/local/bin:/usr/local/sbin:/System/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
#export PATH
#PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
#export PATH
Y agregado:
# for Fink:
export PATH=$PATH:/sw/bin
. /sw/bin/init.sh
Todavía no entiendo completamente las secuencias de comandos de Shell, pero init.sh
inicializa fink, creo que principalmente agrega elementos a $PATH y otras variables de entorno.
Anteriormente, instalé varios paquetes con homebrew
, macports
y varias GUI y espero tener un entorno más comprensible esta vez.
En este momento necesito instalar y un postgreSQL
montón de python modules
incluyendo pip
, virtualenv
, virtualenvironmentwrapper
.psycopg
Parece que el easy_install
ejecutable (¿ejecutable binario?) vive (junto con easy_install-2.5, 2.6 y 2.7) en /usr/bin/
.
Entonces mis preguntas son:
¿Hay alguna razón para tener más de una copia de cada versión de Python?
¿Funcionarán las aplicaciones dependientes de python siempre que haya un enlace a /usr/bin/
una biblioteca de python ejecutable y en funcionamiento, y la ubicación del ejecutable de Python esté en $PATH
?
¿Hay mucha razón para seguir Python2.5
en este punto?
sudo easy_install-2.7 pip
funcionó, entonces, ¿para qué sirve exactamente -rwxr-xr-x 2 root wheel 925 Oct 23 14:48 easy_install
?
Bueno.
La respuesta al número 1 es sí.
Los desarrolladores fink recomiendan NO eliminar las versiones OSX de Python, simplemente porque no son archivos terriblemente grandes y pueden ser necesarios para ciertas funciones y programas de OSX.
Y quiero tener una versión adicional de al menos python2.7 instalada por fink, porque es un árbol de puertos que está diseñado para crear una estructura de directorios similar a UNIX, que con suerte hará que PostgreSQL y python funcionen bien juntos.
En cuanto a la pregunta número 2, no estoy seguro. Creo que esto funcionaría, pero dejar instaladas las versiones originales de OSX evita el problema.
Pregunta 3: sí. - Ver respuesta a la pregunta 1.
Hacer que la fink
versión sea la que se ejecuta a través del terminal es cuestión de:
asegúrese de que el directorio que contiene el binario de fink python precede al OSX (o uno instalado por GUI) en el PATH
, lo que se puede hacer en los usuarios .profile
o .bash_profile
(ubicado en el directorio ~/
, la raíz del usuario) invocando el script de inicio de fink, . /sw/bin/init.sh
O asegurándose de que export PATH=/sw/bin:$PATH
se incluye en el archivo DESPUÉS de cualquier otra línea que exporte una PATH
con una de las otras rutas de python al principio. Por ejemplo, export PATH=/usr/bin:$PATH
o export PATH=/usr/local/bin:$PATH
.
A menos que queramos invocar python cli like python2.7
, necesitaremos hacer un enlace simbólico en el /sw/bin
directorio que apunte "python" a "python2.7", lo cual se hace usando sudo ln -s *source* *link*
, que en este caso se ve así:
sudo ln -s /sw/bin/python2.7 /sw/bin/python
Todavía no estoy seguro de cuál es la respuesta a la pregunta 4, pero veo que las bibliotecas que existen /sw/bin
se llaman desde allí, a diferencia de otras instalaciones. Bien.
Obtuve una copia de Learning UNIX para OS X Mountain Lion que parece bastante prometedora.