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

使用py2exe编译Python脚本后运行exe报错:_TSObject属性缺失

解决py2exe编译pandas脚本后exe运行报错的问题

我之前帮好几个开发者解决过这个问题,本质是py2exe和pandas的版本兼容坑——尤其是当你用了较新的pandas版本时,py2exe的旧逻辑会漏掉pandas内部的一些隐藏模块,导致运行exe时找不到pandas._libs.tslib._TSObject的对应属性。给你几个可行的解决办法:

1. 调整版本兼容性(最稳妥的方案)

py2exe对新版本pandas的支持一直不太理想,建议你降级到经过验证的稳定版本:

  • 先卸载当前pandas,安装0.24.2版本:
    pip uninstall pandas -y
    pip install pandas==0.24.2
    
  • 同时升级py2exe到最新可用版本:
    pip install --upgrade py2exe
    

2. 修改setup.py,强制包含pandas的隐藏模块

py2exe默认不会自动打包pandas的一些内部私有模块,你需要在setup.py里明确指定这些依赖:

from distutils.core import setup
import py2exe, sys, os
import matplotlib
import numpy
import pandas  # 显式导入pandas
from glob import glob

sys.argv.append('py2exe')

datafiles = [('Microsoft.VC90.CRT', glob(r'C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_99b61f5e8371c1d4\*.*'))]
datafiles.extend(matplotlib.get_py2exe_datafiles())

setup(
    windows=['Run.py'],
    data_files=datafiles,
    # 强制包含pandas的核心模块及私有库
    packages=['pandas', 'pandas._libs', 'pandas._libs.tslib'],
    options={
        'py2exe': {
            # 明确指定需要包含的依赖
            'includes': ['numpy', 'matplotlib', 'pandas._libs.tslib'],
            # 排除不需要的绘图后端(如果你的脚本不用的话)
            'excludes': ['_gtkagg', '_tkagg'],
            # 排除不必要的系统DLL
            'dll_excludes': ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll']
        }
    }
)

3. 清理旧编译文件后重新打包

编译前一定要删除之前生成的dist和build文件夹,避免旧的缓存文件干扰新编译结果,然后重新运行:

python setup.py py2exe

4. 替代方案:改用PyInstaller(推荐)

如果不想折腾版本兼容,直接换用PyInstaller会省心很多——它对新版本pandas的支持远好于py2exe,配置也更简单:

  • 安装PyInstaller:
    pip install pyinstaller
    
  • 一键打包(单文件模式):
    pyinstaller --onefile Run.py
    

生成的exe会在dist文件夹里,大部分情况下不需要额外配置就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:02:02