PyInstaller打包Python脚本为exe时报input(): lost sys.stdin错误如何解决
解决方案
最低要求:双击exe正常打开命令行完成交互
你遇到的报错是因为打包时使用了-w参数,该参数是为GUI程序设计的窗口模式参数,会禁用控制台的标准输入输出流,因此调用input()时会出现找不到sys.stdin的错误,调整打包命令即可解决:
- 先删除之前打包生成的
build、dist文件夹和terminal2.spec文件,避免旧缓存干扰打包结果 - 在文件所在目录的终端中执行新的打包命令:
pyinstaller --onefile terminal2.py - 打包完成后打开新生成的
dist文件夹,双击里面的terminal2.exe就会自动弹出命令行窗口,可按照代码逻辑正常完成输入输出操作。
进阶要求:设置为全局命令任意位置调用
只需要将exe所在的目录添加到系统环境变量的Path中即可,操作步骤如下:
- 复制
terminal2.exe所在文件夹的完整绝对路径(例如D:\python_tools\dist) - 右键点击「此电脑」选择「属性」→ 点击「高级系统设置」→ 点击「环境变量」
- 在「系统变量」列表中找到名为
Path的变量,点击「编辑」→ 点击「新建」,将刚才复制的文件夹路径粘贴进去,依次点击所有弹出窗口的「确定」保存配置 - 重启所有已打开的cmd/终端窗口,之后在任意路径下输入
terminal2即可直接运行该程序。
内容的提问来源于stack exchange,提问作者Curious Learner
相关产品推荐
相关产品推荐

