zlib 在 cx frozen python 3.4 应用程序中不可用

zlib not available in a cx frozen python 3.4 application

当我在 Windows 10 64 位(32 位 python)上使用 cx_freeze 将我的 python 3.4 应用程序编译成可执行文件时,我得到以下 运行 看似随机的导入尝试(例如 import getpass / import QtCore)间歇性出现时间异常(大约 4 次中有 1 次):

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

当我在启动应用程序时没有收到错误消息时 运行 没问题。一些注意事项:

1- 使用 python 2.7.

构建的类似应用程序没有出现异常

2- 当 运行 直接从 .pyw 文件(即解冻)时,我没有得到异常。

跟踪:

File "c:\python-bit.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-bit.4\lib\importlib\_bootstrap.py", line 2237, in _find_and_load
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 2226, in _find_and_load_unlocked
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 1191, in _load_unlocked
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 1161, in _load_backward_compatible
File ".\tempCheckout\CanPy\CanSsh.py", line 1, in <module>
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 2237, in _find_and_load
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 2226, in _find_and_load_unlocked
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 1191, in _load_unlocked
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 1161, in _load_backward_compatible
File ".\tempCheckout\CanPy\CommUtil\SshTunnel.py", line 1, in <module>
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 2237, in _find_and_load
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 2226, in _find_and_load_unlocked
File "c:\python-bit.4\lib\importlib\_bootstrap.py", line 1191, in _load_unlocked
File "c:\python-bit.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

认为我的 python 3.4 应用程序正在使用两个依赖于 zlib 的外部库,并且对其使用有一个锁定。这些库不在 python 2.7 中,因此我看不到问题。如果我可以停止异步加载这些库,那么我可能会解决这个问题。

好的,我的假设似乎是正确的。该库正在两个线程中加载。等到第一个线程在第二个线程导入之前似乎已经解决了这个问题。 (虽然也许我可以改变相对时间,但如果事实证明是这样,我会更新)。回复备注:

1- python 2.7 应用程序未加载 zlib,所以这是一个转移注意力的问题。

2- 我认为 .pyw 中的时间一定是这样的,所以问题没有发生。