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

vzgqcmou  于 2023-03-16  发布在  Python
关注(0)|答案(6)|浏览(189)

我想跑:

python somescript.py somecommand

但是,当我运行这个脚本时,我需要PYTHONPATH包含一个特定的目录。我不能将它添加到我的环境变量中,因为我想添加的目录会根据我运行的项目而改变。有没有办法在运行脚本时修改PYTHONPATH?我甚至没有PYTHONPATH变量,所以在运行此脚本期间,我不需要担心附加到它还是覆盖它。

lf3rwulv

lf3rwulv1#

适用于Mac/Linux;

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

对于Windows,设置 Package 器pythonpath.bat;

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

并调用pythonpath.bat脚本文件样;

pythonpath.bat /foo/bar/baz somescript.py somecommand
kadbb459

kadbb4592#

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

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

cngwdvgl

cngwdvgl3#

如果您正在从符合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
6vl6ewon

6vl6ewon4#

您可以尝试执行脚本内的函数

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

vktxenjb5#

您可以将以下代码粘贴到要从中导入的程序包的__init__.py中:

import sys
from pathlib import Path

sys.path.insert(0, Path(__file__).parent)

然后,您可以像往常一样从该包导入模块。
x一个一个一个一个x一个一个二个x
您的IDE可能会在模块名称下面加下划线,但是当您运行解释型Python时,这不会是一个问题。
此外,如果您需要读取路径,稍后可以执行以下操作:

DIR_PATH = Path(sys.path[0])
5rgfhyps

5rgfhyps6#

这适用于Windows:
例如,我的桌面上有一个名为“mygrapher”的文件夹,里面有“calculation”和“graphing”两个文件夹,包含我的主文件“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)

相关问题