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


86

我要跑步:

python somescript.py somecommand

但是,当我运行它时,我需要PYTHONPATH包括一个目录。我不能仅将其添加到我的环境变量中,因为我要添加的目录会根据我正在运行的项目进行更改。PYTHONPATH运行脚本时有没有办法改变?注意:我什至没有PYTHONPATH变量,因此我不必担心在运行此脚本期间将其追加或覆盖它。

Answers:


148

对于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

@İsmail-谢谢。但是,如何在命令提示符下运行脚本时执行此操作?我没有运行Python,没有导入东西,而是手动运行它。
orokusaki 2011年

在Mac / Linux上,您可以这样做PYTHONPATH=/foo/bar python somescript.py somecommand
ismail

我尝试了python -c"import sys;sys.path.append('/my/dir')",然后尝试python myscript.py mycommand,但是显然它与第一个解释器会话之间没有共享路径。啊,刚刚看到您的下一条评论,现在尝试...在WinXP上不起作用。
orokusaki 2011年

1
unsetWindows上没有环境变量命令。而是setlocal在初始值之后添加a echo off,然后endlocal当.bat脚本结束时将隐式发生(PYTHONPATH并将其恢复为先前的值)。
martineau 2011年

5
在Windows上,如果要添加现有路径PYTHONPATH,则可能要使用set PYTHONPATH=%PYTHONPATH%;%1
martineau'1

49
 import sys
 sys.path.append('your certain directory')

基本上sys.path是一个包含python模块所有搜索路径的列表。它由解释器初始化。PYTHONPATH的内容会自动添加到该列表的末尾。


10
或sys.path.insert(0,'/ some / directory')放置在路径的前面。这使您的材料可以覆盖pythonpath中可能已经存在的其他内容。
sienkiew 2011年

我使用此答案在pydev-eclipse IDE之外运行uninttest。
LAL

sys.path.append(r'D:\PyCharmProjects\cheese_shoppe')Windows中的示例。
鲍勃·斯坦

9

如果您是从POSIX兼容的外壳程序(如)运行命令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

正是我想要的,非常感谢。由于某种原因,运行python -c "import sys; sys.path.insert(0,'my/path'); import mymodule"无法正常进行。
卢克·戴维斯


-1

这是针对Windows的:

例如,我的桌面上有一个名为“ mygrapher”的文件夹。在内部,有一个名为“计算”和“图形”的文件夹,其中包含我的主文件“ grapherMain.py”所需的Python文件。另外,“ grapherMain.py”存储在“ graphing”中。要运行所有内容而不移动文件,我可以制作一个批处理脚本。我们将此批处理文件称为“ 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)

5
和@İsmail'cartman'Dönmez的答案有什么不同?
Alex Okrushko,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.