我想跑:
python somescript.py somecommand
但是,当我运行这个脚本时,我需要PYTHONPATH包含一个特定的目录。我不能将它添加到我的环境变量中,因为我想添加的目录会根据我运行的项目而改变。有没有办法在运行脚本时修改PYTHONPATH?我甚至没有PYTHONPATH变量,所以在运行此脚本期间,我不需要担心附加到它还是覆盖它。
PYTHONPATH
lf3rwulv1#
适用于Mac/Linux;
PYTHONPATH=/foo/bar/baz python somescript.py somecommand
对于Windows,设置 Package 器pythonpath.bat;
pythonpath.bat
@ECHO OFF setlocal set PYTHONPATH=%1 python %2 %3 endlocal
并调用pythonpath.bat脚本文件样;
pythonpath.bat /foo/bar/baz somescript.py somecommand
kadbb4592#
import sys sys.path.append('your certain directory')
基本上sys.path是一个列表,包含了python模块的所有搜索路径。它由解释器初始化。PYTHONPATH的内容自动添加到该列表的末尾。
cngwdvgl3#
如果您正在从符合POSIX的shell(如bash)运行该命令,则可以按如下方式设置环境变量:
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
6vl6ewon4#
您可以尝试执行脚本内的函数
python -c "import sys; sys.path.append('/your/script/path'); import yourscript; yourscript.yourfunction()"
vktxenjb5#
您可以将以下代码粘贴到要从中导入的程序包的__init__.py中:
__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])
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)
6条答案
按热度按时间lf3rwulv1#
适用于Mac/Linux;
对于Windows,设置 Package 器
pythonpath.bat
;并调用
pythonpath.bat
脚本文件样;kadbb4592#
基本上sys.path是一个列表,包含了python模块的所有搜索路径。它由解释器初始化。PYTHONPATH的内容自动添加到该列表的末尾。
cngwdvgl3#
如果您正在从符合POSIX的shell(如
bash
)运行该命令,则可以按如下方式设置环境变量:如果所有命令都在一行上,则PYTHONPATH环境值仅应用于该命令。
6vl6ewon4#
您可以尝试执行脚本内的函数
vktxenjb5#
您可以将以下代码粘贴到要从中导入的程序包的
__init__.py
中:然后,您可以像往常一样从该包导入模块。
x一个一个一个一个x一个一个二个x
您的IDE可能会在模块名称下面加下划线,但是当您运行解释型Python时,这不会是一个问题。
此外,如果您需要读取路径,稍后可以执行以下操作:
5rgfhyps6#
这适用于Windows:
例如,我的桌面上有一个名为“mygrapher”的文件夹,里面有“calculation”和“graphing”两个文件夹,包含我的主文件“grapherMain.py“需要的Python文件。另外,“grapherMain.py”存储在“graphing”中。要运行所有内容而不移动文件,我可以创建一个批处理脚本。让我们将此批处理文件命名为“rungraph.bat”。
这个脚本位于“MyGrapher”中。要运行东西,我会进入我的命令提示符,然后执行以下操作: