En el script de Python, ¿cómo configuro PYTHONPATH?

Sé cómo configurarlo en mi / etc / profile y en mis variables de entorno.

Pero, ¿y si quiero configurarlo durante un script? ¿Es import os, sys? ¿Cómo lo hago?

No establece PYTHONPATH , agrega entradas a sys.path . Es una lista de directorios en los que se deben buscar paquetes de Python, por lo que puede agregar sus directorios a esa lista.

 sys.path.append('/path/to/whatever') 

De hecho, sys.path se inicializa dividiendo el valor de PYTHONPATH en el carácter separador de ruta ( : en sistemas similares a Linux ; en Windows).

También puede agregar directorios usando site.addsitedir , y ese método también tendrá en cuenta los archivos .pth existentes dentro de los directorios que usted pasa. (Ese no sería el caso con los directorios que especifique en PYTHONPATH ).

Puede obtener y establecer variables de entorno a través de os.environ :

 import os user_home = os.environ["HOME"] os.environ["PYTHONPATH"] = "..." 

Pero como su intérprete ya está en ejecución, esto no tendrá ningún efecto. Estás mejor usando

 import sys sys.path.append("...") 

que es la matriz en la que se transformará su PYTHONPATH en el inicio del intérprete.

Perdón por volver a abrir la pregunta, pero creo que puede ayudar a alguien:

Si coloca sys.path.append('dir/to/path') sin verificar que ya se haya agregado, podría generar una lista larga en sys.path . Para eso, recomiendo esto:

 import sys import os # if you want this directory try: sys.path.index('/dir/path') # Or os.getcwd() for this directory except ValueError: sys.path.append('/dir/path') # Or os.getcwd() for this directory 

Lo siento si molesto a alguien volviendo a abrir la pregunta.

PYTHONPATH termina en sys.path , que puede modificar en tiempo de ejecución.

 import sys sys.path += ["whatever"] 

puede configurar PYTHONPATH , por os.environ['PATHPYTHON']=/some/path , luego debe llamar a os.system('python') para reiniciar el shell de python para que la ruta recién agregada sea efectiva.

Linux también funciona esto:

 import sys sys.path.extend(["/path/to/dotpy/file/"])