2016-02-22 7 views
0

Когда я скомпилирую приложение python 3.4 в исполняемый файл cx_freeze в Windows 10 64-разрядный (32-разрядный питон), я получаю следующее исключение времени выполнения с перерывами (примерно 1 раз в 4) из, казалось бы, случайных попыток импорта (например, импорт GetPass/импорт QtCore):zlib не доступен в cx frozen python 3.4 application

zipimport.ZipImportError: can't decompress data; zlib not available 

Когда я не получаю сообщение об ошибке при запуске приложение работает нормально. Некоторые примечания:

1- Я не получаю исключение из похожих приложений, построенных с использованием python 2.7.

2- Я не получаю исключение при запуске непосредственно из файла .pyw (то есть незамерзающего).

Трассировка:

File "c:\python\32-bit\3.4\lib\threading.py", line 921, in _bootstrap_inner 
File ".\tempCheckout\CanPy\CanAsync.py", line 400, in run 
File ".\tempCheckout\CanPy\CanAsync.py", line 483, in _connect 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_and_load 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in _find_and_load_unlocked 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1191, in _load_unlocked 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1161, in _load_backward_compatible 
File ".\tempCheckout\CanPy\CanSsh.py", line 1, in <module> 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_and_load 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in _find_and_load_unlocked 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1191, in _load_unlocked 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1161, in _load_backward_compatible 
File ".\tempCheckout\CanPy\CommUtil\SshTunnel.py", line 1, in <module> 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2237, in _find_and_load 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 2226, in _find_and_load_unlocked 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1191, in _load_unlocked 
File "c:\python\32-bit\3.4\lib\importlib\_bootstrap.py", line 1161, in _load_backward_compatible 
zipimport.ZipImportError: can't decompress data; zlib not available 

Кроме того, я нашел это, который, кажется, связанные с: cx_freeze "zlib not avaiable" error when using multiple threads

Подумайте, что мой питон 3.4 приложения с использованием двух внешних библиотек, которые зависят от Zlib и Eсть замок вокруг его использования. Эти библиотеки не находятся в python 2.7, и поэтому я не вижу проблемы. Если я могу остановить эти библиотеки, загружая асинхронно, я могу исправить эту проблему.

+0

Не могли бы вы добавить полный след? – Holloway

ответ

0

ОК, моя гипотеза кажется правильной. Библиотека загружалась в два потока. Ожидание, пока первый поток не импортировался до второго, похоже, устранил проблему. (хотя, возможно, я мог бы просто изменить относительные тайминги, но я обновлю, если это окажется так). В ответ на примечания:

1- приложение python 2.7 не загружало zlib, поэтому это красная селедка.

2- Я думаю, что тайминги должны были быть такими в .pyw, что проблема не возникала.