Python – 在命令行模块运行期间添加PYTHONPATH

我想运行:

python somescript.py somecommand 

但是,当我运行这个我需要PYTHONPATH包括一个特定的目录。 我不能只是将它添加到我的环境variables,因为我想添加基于我正在运行的项目的更改的目录。 运行脚本时是否有办法改变PYTHONPATH ? 注意:我甚至没有PYTHONPATHvariables,所以在运行这个脚本的过程中,我不需要担心是否需要追加它。

对于Mac / Linux;

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

对于Windows,设置一个包装pythonpath.bat ;

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

并调用pythonpath.bat脚本文件,如;

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

基本上sys.path是一个包含所有python模块的searchpath的列表。 它由翻译初始化。 PYTHONPATH的内容自动添加到列表的末尾。

如果您正在运行符合POSIX标准的shell(如bash的命令,则可以像这样设置环境variables:

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

如果全部位于同一行,则PYTHONPATH环境值仅适用于该命令。

 $ 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 

你可以试着在你的脚本里面执行一个函数

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

这是用于Windows的:

例如,我的桌面上有一个名为“mygrapher”的文件夹。 里面有一个名为“计算”和“graphics”的文件夹,其中包含我的主文件“grapherMain.py”需要的Python文件。 另外,“grapherMain.py”被存储在“绘图”中。 要运行一切,而不移动文件,我可以做一个批处理脚本。 我们称这个batch file为“rungraph.bat”。

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

这个脚本位于“mygrapher”。 运行的东西,我会进入我的命令提示符,然后执行:

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