在Windows上批量等效的"源":如何从virtualenv运行python脚本

jmi*_*ite 39 python windows scripting batch-file virtualenv

所以,我已经完成了一些bash脚本,但在Windows上只有很少的批处理脚本.我正在尝试激活python virtualenv,运行python脚本,然后在脚本退出时停用virtualenv.

我有一个名为env的文件夹,这是我的virtualenv,还有一个名为work的文件夹,其中包含我的脚本

这是我到目前为止所得到的:

%~dp0env\Scripts\activate.bat
python %~dp0work\script.py
deactivate
Run Code Online (Sandbox Code Playgroud)

但是,当我运行脚本时,它会激活virtualenv然后停止.它没有到达第二行并运行Python脚本.有没有办法"激活"激活脚本文件夹,以便可以运行其余的批处理脚本,就好像我从命令行调用了activate.bat一样?

Nic*_*tti 58

我要说你只需要在你的activate.bat调用前加上'call',以确保在执行activate后恢复当前的批处理文件:

call %~dp0env\Scripts\activate.bat
Run Code Online (Sandbox Code Playgroud)

考虑对deactivate.bat做同样的事情.此外,如果要确保调用批处理文件不会污染当前cmd.exe环境,请考虑将命令包装在deactivate.bat/ setlocal命令对中.

  • 这正是我们想要的.文档不是很清楚,他们应该说*终止*而不是*停止*.他们的意思不是某种并行执行; 相反,如果不使用`call`命令,则调用批处理的执行将被执行被调用批处理,即调用批处理中的后续指令将被丢弃.使用`call`命令,在被调用的终止之后,将继续执行调用批处理. (2认同)

小智 6

我制作了一个指向cmd /k "path/to the/script/activate.bat"并且有效的.lnk文件.

CMD参数和选项