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

时间:2011-01-02 19:33:21

标签: python pythonpath

我想跑:

python somescript.py somecommand

但是,当我运行这个时,我需要PYTHONPATH来包含某个目录。我不能只将它添加到我的环境变量中,因为我想要添加的目录会根据我正在运行的项目而更改。有没有办法在运行脚本时更改PYTHONPATH?注意:我甚至没有PYTHONPATH变量,因此在运行此脚本期间,我不需要担心附加到它而是覆盖它。

5 个答案:

答案 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)