J'ai deux paquets (disons, dataread
et datainspector
) qui n'ont pas été détectés par PyInstaller. Pour cette raison, l'application se termine lorsque l'application en cours d'exécution atteint le point où elle doit importer des modules à partir de ces packages.
La solution la plus simple serait de copier dataread
et datainspector
dans une application packagée. Mais cela va briser l'intention d'empaqueter une version binaire de l'application.
J'ai lu des informations sur les importations masquées et le crochet, et je pense que les deux peuvent résoudre le problème, mais je ne sais pas lequel utiliser.
Aucune suggestion? PS: ces deux packages peuvent contenir des répertoires imbriqués.
Les crochets sont des fichiers qui spécifient des actions supplémentaires lorsque pyinstaller trouve une instruction d'importation. Donc, si vous ajoutez un fichier "hook-data.py" avec hiddenimports = ['_proxy', 'utils', 'defs']
à l'intérieur si pyinstaller trouvera import data
il recherchera des commandes supplémentaires dans hook-data.py
fichier. Vous devez spécifier le chemin d'accès aux hooks par --additional-hooks-dir
(il est préférable de garder un espace de travail propre que de mélanger les fichiers de compilation uniquement avec la source)
http://pythonhosted.org/PyInstaller/hooks.html
La solution la plus simple consiste à utiliser --hidden-import=modulename
avec le script pyinstaller. Il ajoutera le module comme instruction d'importation en silence.
Les crochets sont meilleurs si vous souhaitez spécifier quel fichier a besoin de quel module. "--hidden-import" est plus simple en une seule fois ou pour le débogage.