Cla*_*k D 9 python cmd batch-file virtualenv
我想使用Windows Task Scheduler在虚拟环境中运行python脚本。我希望调度程序运行一个.bat文件,该文件将
这些步骤从命令行一起工作,并且它们分别在.bat中工作,但是我似乎无法从.bat中使它们一起工作。当我尝试执行python脚本并对原因感到困惑时,似乎virtualenv尚未完全激活。
我的.bat看起来像这样:
call workon venv
cd path/to/Python/proj
python -m script.py
Run Code Online (Sandbox Code Playgroud)
我已经尝试在调用之后立即添加超时,workon
并尝试将workon
bat.bat从我的第一个文件中移出,但是其他行仍然在激活virtualenv之前执行。任何帮助是极大的赞赏!
小智 15
只需输入
call .\venv\Scripts\activate.bat
在 .bat 文件中以及之后的任何命令都会看到 venv 被激活
cmd 中的记录call
会暂停当前脚本的执行,执行被调用的脚本,然后恢复。
您可以&
在oneliner批处理文件中用作条件运算符。
call workon venv & cd path/to/Python/proj & python -m script.py
Run Code Online (Sandbox Code Playgroud)
基本上,它的作用是将每个命令依次运行。您还可以将以下内容加倍&
:
call workon venv && cd path/to/Python/proj && python -m script.py
Run Code Online (Sandbox Code Playgroud)
主体是相同的,但是只有前一个命令成功完成后,下一条命令才会运行 ERRORLEVEL = 0
在.bat中运行时,无需激活虚拟环境。您需要做的就是在您的虚拟环境中运行python.exe文件。
{path to virtual environment directory}/Scripts/python.exe path/to/your/file.py
在Windows Task Scheduler中,您可以指定打开命令提示符的路径。因此,您所需要做的就是添加操作,在字段中使用python 的路径,在字段中Program/script
运行的文件的名称Add arguments
以及您的file.py
in Start in
字段的路径。
PS,如果您正在读取或写入python文件中的文件,请注意,您的路径将相对于您start in
在“操作”窗口中的字段中指定的路径