python - snake - Usando archivos.pth
python tutorial (1)
Estoy tratando de hacer que un módulo sea detectable en un sistema donde no tengo acceso de escritura al directorio global site-packages
, y sin cambiar el entorno ( PYTHONPATH
). He intentado colocar un archivo .pth
en el mismo directorio que el script que estoy ejecutando, pero parece que se ignora. Por ejemplo, creé un archivo extras.pth
con el siguiente contenido:
N:/PythonExtras/lib/site-packages
Pero la siguiente secuencia de comandos, colocada y ejecutada en el mismo directorio, imprime False
.
import sys
print r"N:/PythonExtras/lib/site-packages" in sys.paths
El único directorio en sys.path
al que tengo acceso de escritura es el directorio que contiene el script. ¿Hay otro directorio (actualmente inexistente) donde podría colocar extras.pth
y verlo? ¿Hay una mejor manera de hacer esto?
Estoy usando python 2.7 en Windows. Todas .pth
preguntas .pth
que pude encontrar aquí usan los directorios del módulo del sistema.
Edición: he rastreado el directorio de instalación de Windows por usuario, en %APPDATA%/Python/Python27/site-packages
. Puedo colocar un módulo allí y se importará, pero si pongo un archivo .pth
allí, no tiene ningún efecto. ¿Realmente se supone que esto no funciona, o estoy haciendo algo mal?
Como se describe en la documentación , los archivos PTH solo se procesan si están en el directorio site-packages. (Más precisamente, se procesan si están en un "directorio de sitios", pero el "directorio de sitios" en sí es una configuración global de la instalación de Python y no depende del directorio actual o del directorio donde reside el script).
Si el directorio que contiene su script está en sys.path
, puede crear un sitecustomize.py
en ese directorio. Esto se cargará cuando Python se inicie. Dentro de sitecustomize.py
, puedes hacer:
import site
site.addsitedir(''/some/dir/you/want/on/the/path'')
Esto no solo agregará ese directorio, sino que también lo agregará como un "directorio de sitio", lo que hará que los archivos PTH se procesen allí. Esto es útil si desea crear su propio directorio personal site-packages
.
Si solo necesita agregar uno o dos directorios a la ruta, puede hacerlo de manera más simple. Simplemente cree una pequeña biblioteca de Python que manipule sys.path
, y luego importe esa biblioteca desde su script. Algo como:
# makepath.py
import sys
sys.path.append(''/whatever/dir/you/want'')
# script.py
import makepath
Edición: De nuevo, según la documentación , existe la posibilidad de un directorio específico del sitio en %APPDATA%/Python/PythonXY/site-packages
(en Windows). Puede intentarlo, si de hecho tiene acceso de escritura a eso (y no solo a su directorio de script).