You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 04:52:18