Python: agrega PYTHONPATH durante la ejecución del módulo de línea de comandos

Quiero correr:

python somescript.py somecommand 

Pero, cuando ejecuto esto, necesito PYTHONPATH para incluir un determinado directorio. No puedo simplemente agregarlo a mis variables de entorno porque el directorio que quiero agregar cambios se basa en el proyecto que estoy ejecutando. ¿Hay alguna forma de modificar PYTHONPATH mientras se ejecuta un script? Nota: Ni siquiera tengo una variable PYTHONPATH , por lo que no tengo que preocuparme por agregarla o anularla durante la ejecución de este script.

Para Mac / Linux;

 PYTHONPATH=/foo/bar/baz python somescript.py somecommand 

Para Windows, configure un contenedor pythonpath.bat ;

 @ECHO OFF setlocal set PYTHONPATH=%1 python %2 %3 endlocal 

y llamar pythonpath.bat archivo de script pythonpath.bat como;

 pythonpath.bat /foo/bar/baz somescript.py somecommand 
  import sys sys.path.append('your certain directory') 

Básicamente, sys.path es una lista con todas las rutas de búsqueda para los módulos de Python. Se inicializa por el intérprete. El contenido de PYTHONPATH se agrega automáticamente al final de esa lista.

Si está ejecutando el comando desde un shell compatible con POSIX, como bash , puede establecer la variable de entorno de esta manera:

 PYTHONPATH="/path/to" python somescript.py somecommand 

Si todo está en una línea, el valor del entorno PYTHONPATH se aplica solo a ese comando.

 $ echo $PYTHONPATH $ python -c 'import sys;print("/tmp/pydir" in sys.path)' False $ PYTHONPATH=/tmp/pydir python -c 'import sys;print("/tmp/pydir" in sys.path)' True $ echo $PYTHONPATH 

Puedes intentar esto para ejecutar una función dentro de tu script

 python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()" 

Esto es para windows:

Por ejemplo, tengo una carpeta llamada “mygrapher” en mi escritorio. En el interior, hay carpetas llamadas “cálculo” y “gráficos” que contienen archivos de Python que mi archivo principal “grapherMain.py” necesita. Además, “grapherMain.py” se almacena en “gráficos”. Para ejecutar todo sin mover archivos, puedo hacer un script por lotes. Llamemos a este archivo por lotes “rungraph.bat”.

 @ECHO OFF setlocal set PYTHONPATH=%cd%\grapher;%cd%\calculation python %cd%\grapher\grapherMain.py endlocal 

Este script se encuentra en “mygrapher”. Para ejecutar las cosas, me gustaría entrar en mi línea de comandos, y luego hacer:

 >cd Desktop\mygrapher (this navigates into the "mygrapher" folder) >rungraph.bat (this executes the batch file)