Модуль Xlwings заставляет PyInstaller EXE выдавать исключение

Я пытаюсь заморозить простой скрипт Python 3.4 с именем test.py, используя pyinstaller. Скрипт импортирует версию 0.7.0 модуля xlwings (который я установил через pip), а затем печатает сообщение.

import xlwings
print("Fine!")

Если я удалю импорт xlwings, то pyinstaller test.py создаст EXE-файл (у меня Windows 10) внутри папки dist, который распечатает сообщение «Хорошо» и затем завершит работу. Но если я импортирую модуль xlwings, команда генерирует EXE, который печатает это сообщение, а затем завершает работу (не печатая сообщение «Fine»):

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
  File "C:\Python34\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
    exec(bytecode, module.__dict__)
  File "site-packages\xlwings\__init__.py", line 20, in <module>
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
  File "C:\Python34\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
    exec(bytecode, module.__dict__)
  File "site-packages\xlwings\_xlwindows.py", line 29, in <module>
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
  File "C:\Python34\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
    exec(bytecode, module.__dict__)
  File "site-packages\pandas\__init__.py", line 7, in <module>
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
  File "C:\Python34\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 573, in load_module
    module = loader.load_module(fullname)
  File "pandas\tslib.pyx", line 55, in init pandas.tslib (pandas\tslib.c:102924)
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
  File "C:\Python34\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
    exec(bytecode, module.__dict__)
  File "dateutil\zoneinfo\__init__.py", line 31, in <module>
  File "dateutil\zoneinfo\__init__.py", line 24, in getzoneinfofile
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\OrangeFlash81\\AppData\\Local\\Temp\\_MEI102122\\dateutil\\zoneinfo'
test returned -1

Я знаю, что у cx_Freeze возникают проблемы при импорте dateutil, и это сообщение об ошибке ссылается на dateutil. Возникают ли у pyinstaller те же проблемы, и если да, то как их решить?


person Aaron Christiansen    schedule 10.03.2016    source источник


Ответы (1)


Это не совсем решение, но я решил перейти на использование модуля XLRD, который делает все, что мне нужно, и безотказно работает с pyinstaller; изменить код xlwings для использования XLRD тоже не сложно.

person Aaron Christiansen    schedule 12.03.2016
comment
У cx_Freeze была проблема с xlwings v0.7.0, которая была решена с помощью v0.7.1 — потенциально это также решило проблему, которую вы видели с PyInstaller. - person Felix Zumstein; 03.04.2016
comment
@FelixZumstein Спасибо, я обновлю xlwings и попробую еще раз. - person Aaron Christiansen; 03.04.2016