Python – 在命令行模块运行期间添加PYTHONPATH
我想运行:
python somescript.py somecommand
但是,当我运行这个我需要PYTHONPATH
包括一个特定的目录。 我不能只是将它添加到我的环境variables,因为我想添加基于我正在运行的项目的更改的目录。 运行脚本时是否有办法改变PYTHONPATH
? 注意:我甚至没有PYTHONPATH
variables,所以在运行这个脚本的过程中,我不需要担心是否需要追加它。
对于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)