最近学习了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也能正常运行啦!
希望能帮到你哦~
如果你觉得内容不错的话,欢迎点赞,评论和分享哟~
评论