2017-02-23 58 views
1

У меня есть приложение python, которое зависит от openpyxl и хорошо работает при его запуске через интерпретатор python. Однако при создании exe с py2exe. Ехе был создан, но когда я нажимаю на него я получаю сообщение об ошибке и следующий журнал генерируется:Py2Exe openpyxl importerror

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 –

+0

@CharlieClark на другой машине я генерировать рабочий исполняемый с py2exe и openpyxl. Как это возможно? – user7331766

ответ

1

Я имел та же проблема.

Во-первых, я пробовал предлагаемое решение о понижении до 2.3, но я использую функции только для чтения, которые не работают.

Затем, прочитав несколько форумов openpyxl, я обнаружил, что проблема в том, что 2.4 использует файл Jason для конфигурации. Но я не мог приказать py2exe включить его и использовать.

Наконец, я использовал pyInstaller, и он работал с первой попытки.

2

У меня была та же проблема с использованием openpyxl 2.4.3. Я обнаружил, что для создания файла .exe вам нужно вернуться к старой версии openpyxl. Для этого:

  1. Откройте командную строку и деинсталлировать openpyxl с 'пип деинсталлировать openpyxl'
  2. Переустановка openpyxl использует старую версию 'пункт установить 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__)