为什么 pyinstaller 无法冻结“import pandas”?

问题描述 投票:0回答:1

我正在尝试冻结一个简单的Python文件,该文件仅包含以下内容:

import pandas

但是我收到以下错误:

AttributeError: Failed to retrieve attribute __version__ from module dataclasses

我正在使用以下版本:

  • py安装程序:5.13.2
  • 熊猫:2.2.1
  • Python:3.9.7

全部运行在 Anaconda 和 Windows 上。

这个问题始于一个更大的文件,我已设法将其减少到这个最小的示例。

python pandas pyinstaller python-dataclasses
1个回答
0
投票

使用PyInstaller与pandas打包Python代码时,经常会由于版本冲突或缺少依赖项而出现此错误。以下是问题和潜在解决方案的细分:

理解错误

PyInstaller 尝试捆绑脚本所需的所有模块。 AttributeError 表明与 dataclasses 模块发生冲突,可能由 pandas 内部使用。如果出现以下情况,就会发生这种情况:

  • 版本冲突:您使用的不同库依赖于数据类的特定版本,从而导致冲突。
  • 缺少依赖项: PyInstaller 可能无法自动检测并包含所有必需的数据类文件。

解决方案

  1. 更新数据类:

    • 如果您使用的 Python 版本早于 3.7,则默认情况下不包含 dataclasses 模块。安装或升级:

      pip install --upgrade dataclasses

    • 确保它与您的Python和pandas版本兼容。

  2. 检查环境:

    • 验证您使用的是正确的环境(特别是如果您安装了多个 Python)。在运行命令的环境中仔细检查 PyInstaller、pandas 和 Python 的版本。
  3. 隐藏进口

    • PyInstaller 可能不会自动检测所有导入。尝试添加隐藏的导入:

      pyinstaller --hidden-import=dataclasses your_script.py

  4. 隐藏进口(熊猫)

    • 在某些情况下,可能还需要显式地将 pandas 包含为隐藏导入:

      pyinstaller --hidden-import=pandas --hidden-import=dataclasses your_script.py

  5. 更新 PyInstaller:

    • 如果问题仍然存在,请尝试将 PyInstaller 升级到最新版本:

      pip install --upgrade pyinstaller

其他提示

  • Clean Build:再次运行 PyInstaller 之前删除构建文件夹(dist、build),以避免之前尝试中出现的潜在问题。
  • 虚拟环境:使用虚拟环境来隔离项目依赖关系,避免与其他包发生冲突。
© www.soinside.com 2019 - 2024. All rights reserved.