Неустранимая ошибка PyInstaller: файл zmq.h не найден - PullRequest
0 голосов
/ 26 мая 2020

В MacOS с запущенным pyinstaller я получаю следующую трассировку:

35 INFO: PyInstaller: 3.6
35 INFO: Python: 3.7.7
41 INFO: Platform: Darwin-16.7.0-x86_64-i386-64bit
44 INFO: UPX is not available.

[...]

55950 INFO: Loading module hook "hook-zmq.py"...
/usr/local/lib/python3.7/site-packages/zmq/backend/cffi/__pycache__/_cffi_ext.c:216:10: fatal error: 'zmq.h' file not found
#include <zmq.h>
         ^
1 error generated.
57608 INFO: Loading module hook "hook-gevent.py"...
57732 INFO: Determining a mapping of distributions to packages...
83010 WARNING: Unable to find package for requirement greenlet from package gevent.

[...]

83742 WARNING: library user32 required via ctypes not found
83832 WARNING: library setupapi required via ctypes not found
83833 WARNING: library Advapi32 required via ctypes not found

[...]

125669 INFO: Building EXE from EXE-00.toc completed successfully.

Это не блокирует процесс сборки, но когда я запускаю программу вывода, я получаю

Segmentation fault: 11

Кто-нибудь еще столкнулись с этой проблемой?

1 Ответ

0 голосов
/ 26 мая 2020

Я нашел очень полезным поиск в файле предупреждений, созданном PyInstaller

В выводе команды есть строка

85263 INFO: Warnings written to /path/to/warn-file.txt

Если я ищу zmq, первое предупреждение - это импорт верхнего уровня

missing module named multiprocessing.Process - imported by multiprocessing (top-level), zmq.ssh.tunnel (top-level)

Это дало мне 2 подсказки:

  • multiprocessing был задействован во многих предупреждениях, показанных только в этом file
  • при поиске в файле много предупреждений, связанных с PyQt5 , который импортирован в мое приложение

Я искал многопроцессорность и импорт pyqt и удалил два неиспользованный импорт:

from PyQt5.uic import compileUiDir
from multiprocessing import Pool as ThreadPool

Это не устраняет эту странную zmq.h фатальную ошибку отсутствия заголовка, но заставляет приложение работать правильно после сборки.

Поделитесь своим решением здесь, возможно, это может быть полезно другим ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...