很多情况下我们希望在项目中建立一个build.bat用于项目的自动构建,避免每次构建时都需要手动控制台中输入命令。

例如对于 pyinstall 的项目,只需要如下的实现:

pyinstaller main.spec

但是对于大部分的 python 项目,我们一般都会创建一个虚拟环境,方便对项目依赖包的管理,这时候执行 bat 文件就会因为没有进入虚拟环境而出错,那么如何在 bat 中进入虚拟环境呢?

python的虚拟环境主要分为三种解决方案:virtualenv、pipenv 和 conda,这里以 virtualenv 为例:

使用virtualenv创建的虚拟环境一般会在项目目录下(也可能在其他地方)出现一个包含虚拟环境的文件夹,例如我在一个文件夹中执行命令:

virtualenv env

在该文件夹下面就会出现一个 env 文件夹:

如何在bat中进入虚拟环境

此时进入虚拟环境应执行的指令应为:

./env/Scripts/activate

因此我们应该在我们的 bat 文件的第一行这样写:

call "./env/Scripts/activate"

例如:

如何在bat中进入虚拟环境

执行后的结果:

如何在bat中进入虚拟环境

可见这里的 pip list 是在虚拟环境中执行的。