same - agregar directorio a sys.path/PYTHONPATH
python modules list (4)
Al ejecutar una secuencia de comandos de Python desde Powershell en Windows, esto debería funcionar:
$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"
# Now run the actual script
python your_script.py
Estoy tratando de importar un módulo desde un directorio particular.
El problema es que si uso sys.path.append(mod_directory)
para anexar la ruta y luego abro el intérprete de python, el directorio directorio_modelo se agrega al final de la lista sys.path. Si exporto la variable PYTHONPATH
antes de abrir el intérprete de python, el directorio se agrega al inicio de la lista. En este último caso puedo importar el módulo pero en el primero, no puedo.
¿Alguien puede explicar por qué sucede esto y darme una solución para agregar el mod_directory
al inicio, dentro de un script python?
Cambiar los directorios temporalmente funciona bien para importar:
cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)
Esto está funcionando como está documentado. Las rutas especificadas en PYTHONPATH
se documentan como normalmente después del directorio de trabajo pero antes de las rutas estándar proporcionadas por el intérprete. sys.path.append()
agrega a la ruta existente. Mira here y here . Si desea que un directorio en particular sea lo primero, simplemente insértelo en el encabezado de sys.path:
import sys
sys.path.insert(0,''/path/to/mod_directory'')
Dicho esto, generalmente hay mejores formas de administrar las importaciones que utilizar PYTHONPATH
o manipular sys.path
directamente. Ver, por ejemplo, las respuestas a esta pregunta .
Podrías usar:
import os
path = ''the path you want''
os.environ[''PATH''] += '':''+path