Linux下双击PyInstaller打包的Pandas读txt脚本控制台闪退问题
PyInstaller打包Pandas脚本双击闪退问题解决方案
关键修复步骤
1. 修正文件路径逻辑
PyInstaller打包后,__file__指向的是程序临时解压目录,而非可执行文件所在路径,需兼容两种运行场景:
#!/usr/bin/python2 import os.path import sys import pandas as pd import numpy as np # 区分脚本直接运行和打包后运行的路径 if getattr(sys, 'frozen', False): base_path = sys._MEIPASS # 打包后的资源目录 else: base_path = os.path.dirname(__file__) # 脚本运行目录 myfile = os.path.join(base_path, 'f.txt')
2. 添加异常捕获定位问题
双击闪退大概率是运行时抛出异常但无法查看,给核心逻辑加上异常捕获,把错误信息输出:
try: df = pd.read_csv(myfile, sep='\s+,|\t', skiprows=list(range(13)), engine='python') print df input("Hit enter to close.") except Exception as e: # 将错误写入日志文件,方便排查 with open('error.log', 'w') as f: f.write(str(e)) input(f"出错了:{str(e)},按回车关闭")
3. 确认.spec文件datas配置
确保datas配置正确将f.txt纳入打包资源,格式如下:
datas=[('f.txt', '.')]
修改后重新用spec文件打包:
pyinstaller your_script_name.spec
4. 解决Python2编码问题
Python2默认编码可能导致文件读取失败,建议在read_csv中指定编码:
df = pd.read_csv(myfile, sep='\s+,|\t', skiprows=list(range(13)), engine='python', encoding='utf-8')
额外验证
- 打包后将可执行文件与
f.txt放在同一目录(若配置为外部携带文件) - 尝试以管理员身份运行可执行文件,排除权限限制
内容的提问来源于stack exchange,提问作者pankan
相关产品推荐
相关产品推荐

