El problema es que pyinstaller no verá importaciones de segundo nivel . Entonces, si importa el módulo A , pyinstaller ve esto. Pero cualquier módulo adicional que se importe en A no se verá.
No hay necesidad de cambiar nada en sus scripts de python. Puede agregar directamente las importaciones faltantes al archivo de especificaciones .Simplemente agregue lo siguiente en a = Analysis(...)
:
hiddenimports=["mysql"],
Este debería ser el resultado:
a = Analysis([os.path.join(HOMEPATH,'support/_mountzlib.py'), os.path.join(HOMEPATH,'support/useUnicode.py'), 'icinga.py'],
pathex=['/home/user/projects/icinga_python/releases/v2.1'], hiddenimports=["mysql"],)
Después de eso, ejecute pyinstaller con el archivo de especificaciones como argumento.