我想使用 Windows 任务计划程序在虚拟环境中运行 python 脚本。我希望调度程序运行一个 .bat 文件,它将
这些步骤从命令行一起工作,并且它们在 .bat 中单独工作,但我似乎无法让它们从 .bat 一起工作。当我尝试执行 python 脚本时,virtualenv 似乎没有完全激活,并且不知道为什么。
我的.bat 看起来像这样:
call workon venv
cd path/to/Python/proj
python -m script.py
我尝试在调用
workon
后立即添加超时,并尝试将 workon
移动到与我的第一个文件调用的单独 .bat 中,但其他行仍在激活 virtualenv 之前执行。非常感谢任何帮助!
在.bat中运行时不需要激活虚拟环境。您需要做的就是在虚拟环境中运行 python.exe 文件。
{path to virtual environment directory}/Scripts/python.exe path/to/your/file.py
在 Windows 任务计划程序中,您可以指定命令提示符打开的路径。因此,您需要做的就是在添加操作时,在
Program/script
字段中使用 Python 的路径,在 Add arguments
字段中使用要运行的文件的名称,以及 file.py
中的 Start in
的路径领域。
P.S 如果您在 python 文件中读取或写入文件,请注意您的路径将相对于您在操作窗口
start in
字段中指定的路径
您可以在 oneliner 批处理文件中使用 & 符号
&
运算符。
call workon venv & cd path/to/Python/proj & python -m script.py
它将依次运行每个命令。
您还可以将 & 符号加倍,使其成为条件运算符。
&&
:
call workon venv && cd path/to/Python/proj && python -m script.py
这里的命令仅在前一个命令成功完成的情况下才会运行,换句话说
ERRORLEVEL = 0
只需输入
call .\venv\Scripts\activate.bat
在 .bat 文件中以及之后的任何命令都会看到 venv 被激活
记录一下 cmd 中的
call
暂停当前脚本的执行,执行被调用的脚本,然后恢复。
你的操作系统必须是linux或mac,因为你的路径是“path/to/Python/proj”
在窗口中,它是“path o\Python\proj”
在我的窗口机器中,下面的脚本可以工作
call "venv\scripts\activate"
cd ur_path
py script.py
在批处理文件中,使用虚拟环境的 python 路径启动 python 脚本。即
start C:\mypythonproject\Scripts\python C:\mypythonroject\getcoindata.py
在任务计划程序中,只需将批处理文件安排为常规文件即可。
编辑
activate.bat
并将此行放在底部:
python yourscript.py
安排
activate.bat
本身,它会在虚拟环境激活后自动运行您的脚本。