Quiero correr:
python somescript.py somecommand
Pero, cuando ejecuto esto, necesito PYTHONPATHincluir un directorio determinado. No puedo simplemente agregarlo a mis variables de entorno porque el directorio al que quiero agregar cambia según el proyecto que estoy ejecutando. ¿Hay alguna forma de alterar PYTHONPATHmientras se ejecuta un script? Nota: Ni siquiera tengo una PYTHONPATHvariable, por lo que no necesito preocuparme por agregarla en lugar de anularla durante la ejecución de este script.
                    
                        python
                                pythonpath
                                
                    
                    
                        orokusaki
fuente
                
                
            fuente

PYTHONPATH=/foo/bar python somescript.py somecommandpython -c"import sys;sys.path.append('/my/dir')"y luegopython myscript.py mycommand, pero obviamente no comparte el camino desde la primera sesión de intérprete con la siguiente. Ah, acabo de ver su siguiente comentario, lo intento ahora ... No funcionó en WinXP.unsetcomando de variable de entorno en Windows. En su lugar, agregue unsetlocaldespués de la inicialecho offy luegoendlocalse producirá un implícito cuando finalice el script .bat (yPYTHONPATHse restaurará a su valor anterior).PYTHONPATH, es posible que desee usarset PYTHONPATH=%PYTHONPATH%;%1.import sys sys.path.append('your certain directory')Básicamente, sys.path es una lista con todas las rutas de búsqueda de módulos de Python. Lo inicializa el intérprete. El contenido de PYTHONPATH se agrega automáticamente al final de esa lista.
fuente
sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')ejemplo en Windows.Si está ejecutando el comando desde un shell compatible con POSIX, como
bash, puede configurar la variable de entorno de esta manera:PYTHONPATH="/path/to" python somescript.py somecommandSi 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 $PYTHONPATHfuente
python -c "import sys; sys.path.insert(0,'my/path'); import mymodule"no funcionó.Puede intentar esto para ejecutar una función dentro de su script
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"fuente
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 necesita mi archivo principal "grapherMain.py". 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 endlocalEste script se encuentra en "mygrapher". Para ejecutar cosas, entraría en mi símbolo del sistema y luego haría:
>cd Desktop\mygrapher (this navigates into the "mygrapher" folder) >rungraph.bat (this executes the batch file)fuente