otro - librerias basicas de python
Crear un directorio de paquetes de sitio secundario(y cargar paquetes desde archivos.pth en él) (2)
Echa un vistazo al módulo del site . Proporciona la función addsitedir
que debe hacer lo que quieras.
La forma más fácil de usar esto sería crear un archivo llamado sitecustomize.py
o usercustomize.py
y colocarlo en un directorio PYTHONPATH
actual (o cualquier directorio que termine en sys.path
) con el siguiente contenido:
import site
site.addsitedir(''/usr/local/lib/python2.7'')
Cuando Python está comenzando, se hace un intento de importar sitecustomize
y luego usercustomize
, por lo que esto funciona. De la documentación del sitio:
Después de estas manipulaciones de ruta, se intenta importar un módulo llamado
sitecustomize
, que puede realizar personalizaciones arbitrarias específicas del sitio. Normalmente lo crea un administrador del sistema en el directorio de paquetes de sitio. Si esta importación falla con una excepciónImportError
, se ignora silenciosamente.Después de esto, se intenta importar un módulo llamado
usercustomize
, que puede realizar personalizaciones arbitrarias específicas del usuario, siENABLE_USER_SITE
es verdadero. Este archivo está destinado a ser creado en el directorio de paquetes de sitios del usuario (ver más abajo), que es parte desys.path
menos que esté deshabilitado por-s
. UnImportError
será ignorado silenciosamente.
Me gustaría instalar algunos paquetes en un directorio de site-packages
(más allá de las ubicaciones estándar del sistema). ¿Hay alguna manera de configurar esto de tal manera que los archivos .pth en ellos sean respetados?
Antecedentes: Estoy usando OS X, virtualenv y homebrew. Hay algunos paquetes (especialmente wxPython en mi caso) que no se instalan bien a través de pip en virtualenv. En estos casos, hay paquetes homebrew que funcionan en su lugar. Homebrew crea una tercera carpeta de paquetes de sitio en /usr/local/lib/python2.7
. Me gustaría simplemente apuntar a esta carpeta y dejar el mantenimiento de todos los artículos bajo el control de brew
. Parece, sin embargo, que esto no es posible.
- Agregar a la ruta a través de
$PYTHONPATH
no carga archivos .pth. ( ¿Python 2.6 en OS X debe lidiar con múltiples archivos de fácil instalación.pth en $ PYTHONPATH? ) - Python no permite el anidamiento o el uso recursivo de archivos .pth. ( Archivos .pth anidados o carga de directorios de sitios adicionales desde una red )
- La envoltura para virtualenv
add2virtualenv
agrega algunas inteligencias adicionales al archivo .pth más allá de simplemente tener el directorio en la lista, pero creo que simplemente reordena la lista de rutas.
Ciertamente no soy el único interesado en este tema. Apostaría un buen número de preguntas genéricas de ''archivos pth que no funcionan'' y las publicaciones en línea con las que me he topado están relacionadas con este problema. ¿Hay una buena solución?
PEP 370 abordaba específicamente la creación de directorios de site-packages
por usuario, para tratar la situación en la que el usuario no tiene acceso de administrador a los site-packages
todo el sistema.
Por ejemplo, en Unix (incluido Mac OS), y suponiendo que uno use Python 3.6, se puede crear el siguiente directorio y colocar los archivos .pth
interior.
~/.local/lib/python3.6/site-packages