2011-10-26 7 views
23

¿Hay alguna forma de decirle a Python acerca de las ubicaciones adicionales de site-packages sin modificar las secuencias de comandos existentes?Configuración de Python para usar ubicaciones adicionales para los paquetes de sitio

En mi servidor CentOS 5.5 tengo una instalación de Python 2.7 que está instalada en /opt/python2.7.2 y hay una carpeta site-packages en /opt/python2.7.2/lib/python2.7/site-packages.

La razón de esto es que no quería molestar a la instalación existente de Python 2.4 que se envió con la distribución 5.5.

Sin embargo, una aplicación de Python de terceros también agregó una carpeta site-packages en: /usr/local/lib/python2.7/site-packages y se instaló en esa ubicación.

Esto es parcialmente mi culpa porque no modifiqué el PREFIX en la aplicación Makefile antes de instalar, sin embargo, no hay mucho que pueda hacer ahora.

sé que puedo hacer esto:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages") 

Sin embargo, implicaría me rastrear cada guión y añadiendo lo anterior que no es ideal debe haber cambios en el futuro.

Para evitar esto he creado un enlace simbólico en /opt/python2.7.2/lib/python2.7/site-packages a la ubicación de esta aplicación de terceros:

 
ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp 

Esto parece funcionar bien, pero me pregunto si hay una manera mejor?

Respuesta

36

Puede usar el Site-specific configuration hook.

"Un archivo de configuración de ruta es un fichero cuyo nombre tiene la forma name.pth y existe en uno de los cuatro directorios mencionados anteriormente; su contenido son elementos adicionales (uno por línea) que se añade a sys.path."

En su caso, usted debería ser capaz de lograr lo que desea más que soltar en un archivo .pth que contiene la ruta del directorio para incluir:

[[email protected]]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth 
+0

Esto funciona bien, sin embargo, decidí mordir la viñeta y arreglar la implementación. Pero gracias de todos modos, es útil saberlo para el futuro. – Kev

+2

Esto agrega la ruta al * end * de la ruta de Python. ¿Qué sucede si quiere que sus paquetes de sitios personalizados sean lo primero? He estado experimentando con un archivo sitecustomize.py con cierto éxito, pero parece haber casos extremos en los que simplemente manipular la ruta de Python no es suficiente. – wryfi

2

podría reemplazar el ejecutable pitón con una script envoltorio que agrega su ruta de instalación agregada a PYTHONPATH. Pero esto es un kludge.

Pero trataría de arreglar la instalación del complemento para que vaya correctamente al directorio site-packages.

+0

La respuesta de Shawn fue el truco, pero también tienes razón en que arreglar la instalación es realmente mejor a largo plazo. – Kev

Cuestiones relacionadas