Python Py2Exe openpyxl导入程序

Python Py2Exe openpyxl导入程序,python,error-handling,executable,py2exe,openpyxl,Python,Error Handling,Executable,Py2exe,Openpyxl,我有一个依赖于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\

我有一个依赖于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__

我在使用OpenPYXL2.4.3时遇到了同样的问题。我发现要创建一个.exe文件,您必须恢复到openpyxl的旧版本。为此:

  • 打开命令提示符并使用“pip uninstall openpyxl”卸载openpyxl
  • 使用旧版本“pip安装openpyxl==2.3.5”重新安装openpyxl

  • 我也有同样的问题

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

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


    最后,我使用了pyInstaller,它在第一次尝试时就工作了。

    问题在于uuu版本uuuu是从.constants.json文件读取的,而py2exe没有使用它。为了解决这个问题,我编辑了库文件openpyxl\packaging\extended.py

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


    对我来说效果很好。

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

    __version__ = str(__version__)
    

    openpyxl不支持py2exe@CharlieClark在另一台机器上,我用py2exe和openpyxl生成了一个可执行文件。怎么可能?也为我工作过。是的,就是这样。
    __version__ = str(__version__)