Launching an exe created by PyInstaller results in:
Traceback (most recent call last):
File "main.py", line 35, in <module>
from zeroconf import ServiceBrowser, ServiceListener, Zeroconf
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "zeroconf\__init__.py", line 26, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "zeroconf\_core.py", line 32, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "zeroconf\_engine.py", line 38, in <module>
File "src\\zeroconf\\_listener.py", line 1, in init zeroconf._listener
File "src\\zeroconf\\_services\\info.py", line 1, in init zeroconf._services.info
ModuleNotFoundError: No module named 'zeroconf._utils.ipaddress'
[11808] Failed to execute script 'main' due to unhandled exception!
The exact same error happens if using import zeroconf.
For some reason, the only file in the zeroconf/_utils folder is time.cp312-win_amd64.pyd (notice there is no ipaddress module there)
Ok, it turns out PyInstaller didn't find parts of it. Workaround:
a = Analysis(
...
hiddenimports=[
'zeroconf._utils.ipaddress', # and potentially others in .venv\Lib\site-packages\zeroconf\_utils, but that seems to pull in every pyd file
'zeroconf._handlers.answers', # and potentially others in .venv\Lib\site-packages\zeroconf\_handlers, but that seems to pull in every pyd file
# and potentially others in _protocol or _services in .venv\Lib\site-packages\zeroconf\, but the above imports seem to pull in every pyd file from these
],
...
These imports allowed the following parts to work: from zeroconf import ServiceBrowser, ServiceListener, Zeroconf. However, other components may require more as noted in the comments above.
A full solution would be to add PyInstaller hooks to zeroconf (I may try to learn how...) if that is able to deal with the issue.
Activity
Poikilos commented on Jul 17, 2024
Ok, it turns out PyInstaller didn't find parts of it. Workaround:
a = Analysis( ... hiddenimports=[ 'zeroconf._utils.ipaddress', # and potentially others in .venv\Lib\site-packages\zeroconf\_utils, but that seems to pull in every pyd file 'zeroconf._handlers.answers', # and potentially others in .venv\Lib\site-packages\zeroconf\_handlers, but that seems to pull in every pyd file # and potentially others in _protocol or _services in .venv\Lib\site-packages\zeroconf\, but the above imports seem to pull in every pyd file from these ], ...A full solution would be to add PyInstaller hooks to zeroconf (I may try to learn how...) if that is able to deal with the issue.