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

使用py2exe打包Python脚本失败:输入路径后控制台闪退无报错

问题与解决方案

问题背景

使用py2exe打包Python脚本(PyInstaller打包正常)后,运行可执行文件时输入路径控制台立即关闭,无报错信息。

涉及代码

业务脚本 Convert_nc_to_txt.py

import os
import pandas as pd
import glob as glob

x = input(r'')
os.chdir(x)
files = glob.glob("*.nc")
print(files)

for file in files: 
    print(file)
    ds = xarray.open_dataset(file)
    name = file.split('.')
    df = ds.to_dataframe()
    df.to_csv(name[0] + '.txt', sep ='\t')

打包脚本 setup.py

from distutils.core import setup
import py2exe
from py2exe import freeze


freeze(
    console=['Convert_nc_to_txt.py'],
    data_files=None,
    zipfile='library.zip',
    options={"py2exe":{"excludes":["scipy"],"includes":["xarray","pandas","glob"]}})

打包命令:python setup.py py2exe


排查与解决步骤

1. 修复脚本自身错误并捕获异常

原脚本存在**未导入xarray**的问题,PyInstaller可能通过隐式导入自动处理,但py2exe不会识别这类隐式依赖,这是导致闪退的核心原因之一。同时添加异常捕获和窗口暂停,便于查看报错:

修改后的Convert_nc_to_txt.py:

import os
import pandas as pd
import glob as glob
import xarray  # 补充缺失的导入

try:
    x = input(r'请输入目标路径:')
    os.chdir(x)
    files = glob.glob("*.nc")
    print(files)

    for file in files: 
        print(file)
        ds = xarray.open_dataset(file)
        name = file.split('.')
        df = ds.to_dataframe()
        df.to_csv(name[0] + '.txt', sep='\t')
except Exception as e:
    print(f"错误信息:{str(e)}")
    input("按任意键退出...")  # 暂停窗口查看报错内容

2. 优化py2exe打包配置

py2exe对依赖的自动检测能力较弱,需手动补充必要依赖并调整打包参数:

修改后的setup.py:

from distutils.core import setup
import py2exe
from py2exe import freeze

freeze(
    console=['Convert_nc_to_txt.py'],
    data_files=None,
    zipfile=None,  # 禁用压缩包,将依赖直接放入dist目录,避免模块加载问题
    options={
        "py2exe": {
            "excludes": ["scipy"],
            "includes": ["xarray", "pandas", "glob", "netCDF4", "numpy"],  # 补充xarray的底层依赖
            "bundle_files": 3,  # 不打包为单文件,便于排查依赖缺失
            "dll_excludes": ["MSVCP90.dll"]  # 排除系统自带的冗余DLL
        }
    }
)

3. 手动验证打包结果

  • 避免双击运行exe,而是从已打开的命令行窗口中进入dist目录,执行Convert_nc_to_txt.exe,这样即使程序报错,控制台也不会立即关闭
  • 检查dist目录,确认xarray、netCDF4等依赖模块的文件夹已存在
  • 若仍有问题,可在setup.py的py2exe选项中添加"debug": True,重新打包时查看详细的依赖检测日志,定位缺失的模块

内容的提问来源于stack exchange,提问作者Cosis94

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:24:56