我想跑:
python somescript.py somecommand
但是,当我运行这个时,我需要PYTHONPATH
来包含某个目录。我不能只将它添加到我的环境变量中,因为我想要添加的目录会根据我正在运行的项目而更改。有没有办法在运行脚本时更改PYTHONPATH
?注意:我甚至没有PYTHONPATH
变量,因此在运行此脚本期间,我不需要担心附加到它而是覆盖它。
答案 0 :(得分:121)
对于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
答案 1 :(得分:44)
import sys
sys.path.append('your certain directory')
基本上sys.path是一个列表,其中包含python模块的所有搜索路径。它由解释器初始化。 PYTHONPATH的内容会自动添加到该列表的末尾。
答案 2 :(得分:7)
如果从符合POSIX的shell运行命令,例如bash
,则可以像这样设置环境变量:
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
答案 3 :(得分:0)
您可以尝试在脚本中执行函数
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"
答案 4 :(得分:-2)
这适用于Windows:
例如,我的桌面上有一个名为“mygrapher”的文件夹。在里面,有一个名为“计算”和“图形”的文件夹,其中包含我的主文件“grapherMain.py”需要的Python文件。此外,“grapherMain.py”存储在“图形”中。要在不移动文件的情况下运行所有内容,我可以制作批处理脚本我们称这个批处理文件为“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)