python切换虚拟环境(workon或activate)会中断bat的运行的处理方案

avatar 2020年2月15日22:01:30 评论 7,012

加入VIP,可以享受无广告视频播放!更可享受教程提前看!详情猛戳:VIP介绍

最近学习了virtualenv这个python的虚拟环境之后,感觉开发起项目来是真的棒。它可以隔离系统的python环境来安装,让开发环境比较纯净,方便出精品。

比方说我有个a项目,它的执行的python脚本为a.py,使用的对应虚拟环境名字为aaa。此时,我们手工在cmd中调用的方式为。

首先打开cmd,进入这个a项目所在的文件夹,然后激活相关的虚拟环境。

使用workon aaa命令来激活。

激活之后,使用python a.py命令来执行该项目程序。

这是手动的方案,那自动的呢?我就想到写一个bat脚本来实现先切换到虚拟环境,然后再执行该项目程序了。

为了简化,我们的bat脚本就存放在a项目的文件夹中,起名为b.bat。

期初,我的bat文件是这样写的:

@echo off
workon aaa
python a.py

于是我开始运行b.bat文件(如果直接运行bat文件,需要在后面再加个pause看清楚输出结果,我这里再cmd中运行一下看),结果发现,他能够顺利进入aaa的虚拟环境,但却并没有运行a.py这个程序。

这是为什么呢?


因为啊,本质原因是因为workon,activate这样的命令,如果你到virtualenv中查看的话,也是一个bat文件,所以相当于是一个bat文件,调用了另一个bat文件,导致第一个bat文件中断。这里说的第一个bat是指的b.bat,另一个bat指的是workon.bat。为了让b.bat不中断,解决的方法很简单,就是在workon或activate前面加一个call就可以了。

所以最终代码变为:

@echo off 
call workon aaa
python a.py

再次运行b.bat文件,我们就会发现我们进入了虚拟空间aaa,并且a.py也能正常运行啦!

 

希望能帮到你哦~

avatar

发表评论

您必须才能发表评论!