如何解决使用PyInstaller打包成无控制台程序时与Popen相关的运行错误?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2212个文字,预计阅读时间需要9分钟。
有时我们需要在程序中执行一些cmd命令,可以使用os或其它模块中的popen方法去执行。这个问题通常是由于程序内有输入导引导致的,输入可以是input()函数,也可以是其它如os的stdin操作。
有时候我们需要在程序里执行一些cmd命令,使用os或者其它模块中的popen方法去执行
这个问题一般是程序内有输入导致的,这个输入可以是input(),也可以是其它的一些stdin操作(如os.popen实际上会造成输入请求)
本质上就是:使用-w参数(无控制台)打包时程序里不要请求输入
或者,你也可以不用-w参数,手动隐藏控制台!
有一天,我把使用了os.popen方法的python程序用pyinstaller打包成exe(用了无控制台打包参数-w)
双击运行时程序却弹框报错!
我就有点纳闷:为什么有控制台打包出来的exe(不使用-w参数)可以运行,使用-w参数(无控制台)打包的却不能运行呢?
首先,调用os.popen部分的代码大概是下面这样的:
with os.popen('taskkill /f /t /im nginx.exe') as re: # 杀掉nginx result = re.read()
执行cmd,杀死nginx。
本文共计2212个文字,预计阅读时间需要9分钟。
有时我们需要在程序中执行一些cmd命令,可以使用os或其它模块中的popen方法去执行。这个问题通常是由于程序内有输入导引导致的,输入可以是input()函数,也可以是其它如os的stdin操作。
有时候我们需要在程序里执行一些cmd命令,使用os或者其它模块中的popen方法去执行
这个问题一般是程序内有输入导致的,这个输入可以是input(),也可以是其它的一些stdin操作(如os.popen实际上会造成输入请求)
本质上就是:使用-w参数(无控制台)打包时程序里不要请求输入
或者,你也可以不用-w参数,手动隐藏控制台!
有一天,我把使用了os.popen方法的python程序用pyinstaller打包成exe(用了无控制台打包参数-w)
双击运行时程序却弹框报错!
我就有点纳闷:为什么有控制台打包出来的exe(不使用-w参数)可以运行,使用-w参数(无控制台)打包的却不能运行呢?
首先,调用os.popen部分的代码大概是下面这样的:
with os.popen('taskkill /f /t /im nginx.exe') as re: # 杀掉nginx result = re.read()
执行cmd,杀死nginx。

