¿Cómo averiguo qué directorios figuran en la PYTHONPATH
variable de mi sistema , desde un script de Python (o el shell interactivo)?
fuente
¿Cómo averiguo qué directorios figuran en la PYTHONPATH
variable de mi sistema , desde un script de Python (o el shell interactivo)?
sys.path
podría incluir elementos que no están específicamente en su PYTHONPATH
variable de entorno. Para consultar la variable directamente, use:
import os
try:
user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
user_paths = []
sys.path
.
Probablemente también quieras esto:
import sys
print(sys.path)
O como un trazador de líneas desde la terminal:
python -c "import sys; print('\n'.join(sys.path))"
Advertencia : si tiene instaladas varias versiones de Python, debe usar el comando correspondiente python2
o python3
.
python -c "import sys; print('\n'.join(sys.path))"
Parece que no puedo editar la otra respuesta. Tiene un pequeño error en que es solo de Windows. La solución más genérica es usar os.sep como se muestra a continuación:
sys.path puede incluir elementos que no están específicamente en su variable de entorno PYTHONPATH. Para consultar la variable directamente, use:
import os
os.environ['PYTHONPATH'].split(os.pathsep)
os.sep
devuelve el separador de directorio para el sistema operativo, por ejemplo /
. El separador utilizado en la ruta de Python es diferente y se devuelve os.pathsep
como se muestra en la respuesta aceptada.
PYTHONPATH es una variable de entorno cuyo valor es una lista de directorios. Una vez configurado, Python lo utiliza para buscar módulos importados, junto con otros estándares. y directorios de bibliotecas de terceros que figuran en "sys.path" de Python.
Como cualquier otra variable de entorno, puede exportarlo en shell o en ~ / .bashrc, consulte aquí . Puede consultar os.environ ['PYTHONPATH'] por su valor en Python como se muestra a continuación:
$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"
SI se define en shell como
$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite
ENTONCES resultado =>
/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
ELSE resultado =>
PYTHONPATH is not defined
Para configurar PYTHONPATH en múltiples rutas, consulte aquí .
Tenga en cuenta que se puede agregar o eliminar una ruta de búsqueda a través de sys.path.insert (), del o remove () en tiempo de ejecución, pero NO a través de os.environ []. Ejemplo:
>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>>
En resumen, PYTHONPATH es una forma de especificar las rutas de búsqueda de Python para los módulos importados en sys.path. También puede aplicar operaciones de lista directamente a sys.path sin la ayuda de PYTHONPATH.
Python me dice dónde vive cuando me da un mensaje de error :)
>>> import os
>>> os.environ['PYTHONPATH'].split(os.pathsep)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\martin\AppData\Local\Programs\Python\Python36-32\lib\os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'PYTHONPATH'
>>>
Utilizar este:
import sys
print(sys.executable)
O una línea del cmd:
python -c "import sys; print(sys.executable)"
PYTHONPATH
. Úselosys.path
para eso.sys.path
es "Una lista de cadenas que especifica la ruta de búsqueda para módulos" - docs.python.org/2/library/sys.html#sys.path . PYTHONPATH es una variable de entorno que afecta a esta lista. Por cualquier definición razonablesys.path
es su "ruta de Python".python -m site
.