Python在新CMD控制台中运行其它py程序
想实现在一个py程序中,弹出一个新的CMD控制台来运行其它py程序的功能。看了下多进程和多线程方面的资料,发现不是干这个用的。
专门做这种事情的模块(库)叫subprocess(Python自带),通过下面的方式可以在Win10中弹出新控制台窗口来运行子程序:
subprocess.run(["python", "程序.py"], creationflags = subprocess.CREATE_NEW_CONSOLE)
["python", "程序.py"] 是个列表:第一个值表示命令,后面的值都表示命令参数
python表示系统的Python命令,后面表示把"程序.py"这个参数传递给前面的python命令
creationflags = subprocess.CREATE_NEW_CONSOLE 是Win平台专用参数:新建控制台窗口
Python venv虚拟环境
但是,如果是Python venv虚拟环境的话,就不能直接使用系统的Python命令了。那么需要调用venv虚拟目录里的python.exe来解析运行py程序,但直接写硬路径不太好,所以引入sys模块(库),用里面的 sys.executable 可以获取到当前Python解释器的位置。
所以上面的代码改成:
subprocess.run([
sys.executable
, "web.py"], creationflags = subprocess.CREATE_NEW_CONSOLE)
然后又有新疑问了,这样调用的话,没有进入venv虚拟环境啊。这个请看:
