top same modules from beyond attempted __all__ python mechanize python-import pythonpath

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