2017-02-23 114 views
1

我有一個依賴於openpyxl的python應用程序,並且在通過python解釋程序運行時運行良好。但是,使用py2exe創建一個exe文件時。生成exe文件,但是當我點擊它,我得到一個錯誤,併產生以下日誌:Py2Exe openpyxl導入程序錯誤

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"]}}) 
+0

openpyxl不支持另一臺機器我產生一個工作可執行文件py2exe和openpyxl上py2exe –

+0

@CharlieClark。這怎麼可能? – user7331766

回答

1

我一樣的問題。

首先,我嘗試了降級到2.3的建議解決方案,但是我使用的是隻讀函數,但它不起作用。

然後,閱讀一些openpyxl論壇,我發現問題是2.4使用Jason文件進行配置。但我無法指示py2exe包含它並使用它。

最後,我使用pyInstaller,它在第一次嘗試時就工作了。

2

我在使用openpyxl 2.4.3同樣的問題。我發現要創建一個.exe文件,你必須恢復到舊版本的openpyxl。要做到這一點:

  1. 打開命令提示符,然後卸載openpyxl用 '點子卸載openpyxl'
  2. 重新安裝openpyxl使用的是舊版本的 'PIP安裝openpyxl == 2.3.5'
5

問題是因爲__version__是從.constants.json文件中讀取的,並且它沒有被py2exe佔用。對於工作的時候,我編輯的庫文件openpyxl \包裝\ extended.py

#from openpyxl import __version__ 
__version__ = "2.4.5" 

我評論的導入和創建的變量__version__從.constants.json文件存在於openpyxl的版本庫中的文本。再次使用py2exe創建可執行文件。

對我來說工作很好。

+0

也爲我工作。 – Rodrigo

-1

在openpyxl \包裝\ extended.py第5行添加:

__version__ = str(__version__)