打包exe出错了:

news/2025/10/27 21:15:24/文章来源:https://www.cnblogs.com/nxhujiee/p/19170185

打包exe出错了:
Traceback (most recent call last):
File "huu.py", line 6, in
n = int(input('enter:'))
RuntimeError: input(): lost sys.stdin

源码:

python
print('判断一个数是否为素数')
print()while True:print('请输入一个大于1的数:')n = int(input('enter:'))yn = Truefor i in range(2, n):if n % i == 0:yn = Falsebreakif yn == True:print(n, '\r是素数', flush = True)else:print(n, '\r是合数', flush = True)print()

----

您遇到的错误是由于在打包成可执行文件(如exe)时,标准输入流(sys.stdin)在非控制台环境中丢失导致的。以下是解决方案和优化建议:

原因分析

  1. 打包工具特性:PyInstaller等工具在打包GUI应用时默认隐藏控制台,导致input()无法使用。
  2. 输入流丢失:打包后sys.stdin可能被关闭或重定向。

解决方案

方法一:强制显示控制台(推荐)

在打包命令中添加--console参数:

pyinstaller --console your_script.py

方法二:代码适配

修改输入方式,兼容控制台和打包环境:

import sysdef safe_input(prompt):try:return input(prompt)except EOFError:return ""except RuntimeError:print("输入功能在打包环境中不可用")return None# 替换原代码中的input()
n = safe_input('请输入大于1的数:')

优化建议

  1. 输入验证:增加输入有效性检查
while True:try:n = int(safe_input('请输入大于1的数:'))if n <= 1:print("请输入大于1的数")continuebreakexcept ValueError:print("请输入有效数字")
  1. 算法优化:提升素数判断效率(减少循环次数)
def is_prime(n):if n < 2:return Falseif n == 2:return Trueif n % 2 == 0:return False# 只需检查到平方根for i in range(3, int(n**0.5)+1, 2):if n % i == 0:return Falsereturn True

完整修改后的代码

import math
import sysdef safe_input(prompt):try:return input(prompt)except (EOFError, RuntimeError):return Nonedef is_prime(n):if n < 2:return Falseif n == 2:return Trueif n % 2 == 0:return False# 只需检查到平方根for i in range(3, int(math.isqrt(n)) + 1, 2):if n % i == 0:return Falsereturn Truewhile True:user_input = safe_input('请输入大于1的数(输入q退出):')if user_input is None or user_input.lower() == 'q':breaktry:n = int(user_input)if n <= 1:print("请输入大于1的数")continueexcept ValueError:print("请输入有效数字")continueresult = is_prime(n)print(f"{n} 是 {'素数' if result else '合数'}")print()

打包注意事项

  1. 使用以下命令打包:
pyinstaller --clean --console --name PrimeChecker prime_checker.py
  1. 如果仍有问题,尝试添加输入流补丁:
pyinstaller --console --hidden-import=tokenize your_script.py

这些修改确保:

  • 兼容控制台和打包环境
  • 输入更健壮
  • 算法效率提升(时间复杂度从O(n)降到O(√n))
  • 添加退出选项
  • 更好的错误处理

请尝试修改后重新打包,应该能解决sys.stdin丢失的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

19 lambda表达式的简化过程

19 lambda表达式的简化过程Lambda表达式 为什么引入lambda表达式?避免内部类定义过多 去掉无意义代码,只留下核心逻辑函数式接口 定义:任何借口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。 对于函数…

详细介绍:Redis多租户资源隔离方案:基于ACL的权限控制与管理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

二分查找边界

二分查找边界二分查找边界Q:给定一个长度为𝑛的有序数组nums ,其中可能包含重复元素。请返回数组中最左一个元素target的索引。若数组中不包含该元素,则返回−1 。查找左边界 回忆二分查找插入点的方法,搜索完成…

求解 LCA 的三种方法及其比较

本文写于 2025 年 10 月 24 日。 昨天看到岁岁似今朝以“学不成名誓不还”的勇气学 LCA(树上最近公共祖先),并感叹“LCA 是我最严厉的母亲”,心血来潮,也学了一下。翻看着洛谷玲琅满目的题解,竟学会了三种方法,…

策略模式优化if-else

class Calculator:def __init__(self):self.strategy = Nonedef set_strategy(self, strategy):self.strategy = strategydef calculate_result(self, num1, num2):return self.strategy.execute(num1, num2)class Add…

捐赠

题目 题目描述 有 \(A\)、\(B\) 两类物品。 paper 打算每类各选 \(k\) 个(\(k\) 可自由决定,可取 \(0\))一起捐出。捐赠的总贡献为所选物品的价值总和。 初始时 paper 没有物品,但是 paper 可以通过一些操作改变物…

学习笔记:重链剖分

本文写于 2025 年 9 月 28 日。 前言 这几天一下课,班里的某位同学就走到我座位旁边,念叨着“来学树剖”。在他的 传销 诈骗 怂恿 鼓励之下,我也终于来到了这座大山面前,但发现似乎也并不难…… 何为重链剖分 考虑…

P3232 [HNOI2013] 游走

考虑贪心。 随机游走则显然每条边期望经过次数越大则其编号应越小。 每条边的期望经过次数难以计数,考虑每个店期望经过次数,设计状态 \(f_i\) 表示点 \(i\) 期望经过次数。 转移: \(f_i=\sum_{v\in e_i}f_v\cdot \…

FRP 后端无法获取请求者IP解决方案

FRP 后端无法获取请求者IP解决方案📝 FRP 后端无法获取请求者真实 IP?别慌,解决方案来啦!🧐 问题背景 当你使用 FRP 进行内网穿透或代理服务时,是否遇到过这样的困扰: 后端服务拿到的客户端 IP 全都是 FRP 服…

正睿 2025 NOIP 20连测 Day9

坐在前面的老哥 AK 了。他怎么这么成功,我怎么这么失败/ll。 T1小 W 有 \(n\) 个球,每个球都有一种颜色,其中第 \(i\) 个球初始的颜色可以用正整数 \(a_i\) 来表示,一共有 \(m\) 种颜色。 在一次染色操作中,小 W …

计算几何初步:CCW 与判断两线段的相交性

本文写于 2025 年 9 月 18 日。 前言 昨天在正睿的“IOI 普及联赛”中,有这样一道题,极大地冲击了本蒟蒻的心灵。赛后查看题解,此题竟然涉及计算几何,这更是本蒟蒻从未涉足的领域。我遂查询资料,学习了 CCW 算法以…

如何选择合适的团队共享网盘?坚果云、亿方云等15款产品横向测评

面对市场上琳琅满目的产品,管理者和技术决策者往往在可靠性、性能、安全性与成本之间难以取舍。本篇文章将围绕企业共享网盘,从功能覆盖、同步效率、安全合规、协作体验等维度,深度评测并对比市面上15款主流产品,帮…

软件工程学习日志2025.10.27

🎯 今日目标 完成基于Trae框架的IT岗位求职记录系统开发,重点训练数据库的增删改查操作能力 💻 项目启动:9:00 AM 技术选型确定 今天开始着手开发老师布置的IT岗位求职记录系统。经过技术调研,我决定采用以下技…

深入解析:TCP/IP 四层模型协作流程详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Windows全版本激活教程(仅供测试)

Windows全版本激活教程(仅供测试)Windows 系统激活指南 注意:本文档及所提供的工具仅供学习、测试和环境验证使用。请确保您遵守软件许可协议,在合法范围内使用。 免责声明 使用任何激活工具都存在潜在风险,包括但不…

基本概念2

1, 访问控制列表步骤一:创建一个访问控制规则 步骤二:调用这个规则基本配置和高级配置 基本配置只能限制源地址,不检查目标地址 高级配置源地址与目标地址都检查步骤一: 命令: acl name test advance # test是给…

20251027周一日记

20251027周一日记前些日: 1.周五玩得挺爽,熬到五点多睡的,转天有点遗憾但还是玩得挺爽。见识到了大城市之间的差距。 2.周六回家,出去吃饭;周日在家,出去吃饭。听家人说各有各在拼搏的方向。 今日: 1.早上睡过了…

【通讯协议】IIC

前言 对于各种协议的知识,假如不常用的话还是很容易忘记和生疏的,于是我会在这篇文章重新学习,顺带记录一下,以便下次复习。由于最近要用到 IIC,所以最先复习 IIC 的内容。 网上有关 IIC 的资料很多也很全面,所以…

Robot Queries

题目传送门 前置知识——向量的加减 \((x_1,y_1) \pm (x_2,y_2) = (x_1\pm x_2,y_1\pm y_2)\)。 满足交换律和结合律。 题目大意 有一个在 \((0,0)\) 的点。现在给出 \(n\) 个操作序列 \({f}\),每个指令形如 \((x, y)…

10月27日

今天上午学了统一建模语言和数构,下午学了Java