Pregunta

¿Cómo puedo saber qué directorios se enumeran en la variable PYTHONPATH de mi sistema, desde dentro de un script en Python (o el shell interactivo)?

¿Fue útil?

Solución

sys.path podría incluir elementos que no están específicamente en la variable de entorno PYTHONPATH. Para consultar la variable directamente, utilice:

import os
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []

Otros consejos

Es probable que también quieren esto:

import sys
print(sys.path)

O como un trazador de líneas desde el terminal:

python -c "import sys; print('\n'.join(sys.path))"

Parece que no puede editar la otra respuesta. Tiene un error menor, ya que es sólo para Windows. La solución más genérica es utilizar os.sep como a continuación:

sys.path podría incluir elementos que no están específicamente en la variable de entorno PYTHONPATH. Para consultar la variable directamente, utilice:

import os
os.environ['PYTHONPATH'].split(os.pathsep)

PYTHONPATH es una variable de entorno cuyo valor es una lista de directorios. Una vez establecido, que es utilizado por Python para buscar los módulos importados, junto con otras ETS. y directorios de bibliotecas 3 ª parte enumeran en "sys.path" de Python.

Como cualquier otra variable de entorno, puede exportarlo en depósito o en ~ / .bashrc, consulte aquí . Se pueden realizar consultas 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')"

IF se define en la cáscara como

$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite

ENTONCES resultar =>

/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']

resultado ELSE =>

PYTHONPATH is not defined

Para establecer PYTHONPATH a varias rutas, ver aquí .

Tenga en cuenta que se puede añadir o borrar una ruta de búsqueda a través de sys.path.insert (), del o eliminar () en tiempo de ejecución, pero no a través 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 la ruta de búsqueda de Python (s) para los módulos importados en sys.path. También se puede aplicar directamente a la lista de operaciones sys.path sin la ayuda de PYTHONPATH.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top