current python python-module pythonpath

current - ¿Cómo puedo descubrir mi ruta de python usando python?



python get current path (4)

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


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 listados en "sys.path" de Python.

Como cualquier otra variable de entorno, puede exportarla en shell o en ~ / .bashrc, vea here . 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'']

Resultado ELSE =>

PYTHONPATH is not defined

Para configurar PYTHONPATH en múltiples rutas, vea here .

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 la (s) ruta (s) de búsqueda de Python para los módulos importados en sys.path. También puede aplicar las operaciones de lista directamente a sys.path sin la ayuda de PYTHONPATH.


Parece que no puede editar la otra respuesta. Tiene un pequeño error en que es solo para 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)


Probablemente también quieras esto:

import sys print(sys.path)

O como un forro desde la terminal:

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


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 try: user_paths = os.environ[''PYTHONPATH''].split(os.pathsep) except KeyError: user_paths = []