【问题标题】:Py2Exe openpyxl importerrorPy2Exe openpyxl 导入错误
【发布时间】:2017-07-13 16:34:35
【问题描述】:

我有一个依赖于 openpyxl 的 python 应用程序,并且在通过 python 解释器运行它时运行良好。但是,当使用 py2exe 创建 exe 时。该 exe 已生成,但当我单击它时出现错误并生成以下日志:

Traceback (most recent call last):
File "excelTest.py", line 1, in <module>
File "openpyxl\__init__.pyc", line 30, in <module>
File "openpyxl\workbook\__init__.pyc", line 5, in <module>
File "openpyxl\workbook\workbook.pyc", line 16, in <module>
File "openpyxl\writer\write_only.pyc", line 23, in <module>
File "openpyxl\writer\excel.pyc", line 36, in <module>
File "openpyxl\packaging\extended.pyc", line 4, in <module>
ImportError: cannot import name __version__

谁能告诉我问题是什么以及如何解决它。 这是我的 setup.py:

from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(windows=['excelTest.py'], options={"py2exe": {"includes": ["openpyxl","os","ntpath","Tkinter","tkFileDialog","sys"]}})

【问题讨论】:

  • openpyxl 不支持 py2exe
  • @CharlieClark 在另一台机器上我使用 py2exe 和 openpyxl 生成一个工作可执行文件。这怎么可能?

标签: python error-handling executable py2exe openpyxl


【解决方案1】:

我在使用 openpyxl 2.4.3 时遇到了同样的问题。我发现要创建 .exe 文件,您必须恢复到旧版本的 openpyxl。这样做:

  1. 打开命令提示符并使用 'pip uninstall openpyxl' 卸载 openpyxl
  2. 使用旧版本 'pip install openpyxl==2.3.5' 重新安装 openpyxl

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。

    首先,我尝试了降级到 2.3 的建议解决方案,但我使用了不起作用的只读函数。

    然后,阅读一些openpyxl论坛我发现问题是2.4使用Jason文件进行配置。但我无法指示 py2exe 包含它并使用它。

    最后,我使用了 pyInstaller,第一次尝试就成功了。

    【讨论】:

      【解决方案3】:

      问题是因为 __version__ 是从 .constants.json 文件中读取的,并且没有被 py2exe 占用。为了变通,我编辑了库文件 openpyxl\packaging\extended.py

      #from openpyxl import __version__
      __version__ = "2.4.5"
      

      我对导入进行了注释,并使用 openpyxl 库中存在的 .constants.json 文件中的版本文本创建了一个变量 __version__。再次使用 py2exe 创建了可执行文件。

      对我来说工作得很好。

      【讨论】:

      • 也为我工作。
      • 是的,就是这样。
      【解决方案4】:

      在 openpyxl\packaging\extended.py 中添加到第 5 行:

      __version__ = str(__version__)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-10
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        相关资源
        最近更新 更多