comment inclure le module Geopandas dans le fichier exécutable (.exe) par l'utilistation de l'outil auto-py-to-exe
J'ai rencontré ce problème et la raison est que cette bibliothèque n'est pas incluse
comment inclure le module Geopandas dans le fichier exécutable (.exe) par l'utilistation de l'outil auto-py-to-exe
J'ai rencontré ce problème et la raison est que cette bibliothèque n'est pas incluse
Bonjour
Aprés avoir installer pip bien sur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part pip install geopandas
Bonne soirée
Bonjour,
auto-py-to-exe est une interface graphique à pyinstaller. Le message d'erreur signalé est courant quand la conversion py=>exe s'est mal passée. Il n'est pas toujours possible de voir d'où ça vient en lisant simplement les logs du traitements, mais ça vaut quand même le coup de regarder. Sinon, on peut essayer l'ajout du module que pyinstaller n'a pas trouvé avec les arguments adaptés: https://pyinstaller.readthedocs.io/en/stable/usage.html.
Quand ça devient compliqué, je suggère de revenir à pyinstaller directement, parce que je sais pas dans quel mesure auto-py-to-exe limite ses possibilités de paramétrage.
Bonjour,
Je n'utilise jamais la solution du fichier "xxx.spec", parce que je trouve ça inutilement compliqué. Mais peut-être que dans certain cas, c'est indispensable?
Voilà comment je fais: sous Windows, je crée un fichier "xxx.bat", dans lequel je lance pyinstaller.exe avec les arguments de la ligne de commande. Tout en profitant d'une particularité de ce type de fichier: toute ligne terminée par '^' est considérée comme poursuivie par la ligne suivante.
Voilà un exemple d'un tel fichier pour un simple code pour console (donc non-graphique):
- Les 2 lignes "IF..." servent à éliminer les traces des précédents traitements. Le reste est facile à comprendre (vérifier dans la doc).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SET programme=monprogramme IF EXIST build RMDIR /S /Q build IF EXIST dist RMDIR /S /Q dist pyinstaller ^ --clean ^ --noconfirm ^ --onefile ^ --noupx ^ %programme%.py PAUSE
- Si c'est un programme graphique, il faut ajouter: --noconsole ^
- Le traitement par pyinstaller ne touche que les codes python et les modules à importer. Il ne touche pas aux fichiers "non-python". Par exemple, il ne transfère pas les icônes que le programme graphique devrait utiliser. Dans ce cas, il faut ajouter, par exemple: --icon ".\%programme%.ico" ^ pour l'icone à intégrer dans l'exe, et --add-data ".\%programme%.png;." ^ pour l’icône à placer dans la fenêtre graphique. Pareil pour les fichiers et répertoires qui contiennent des données. Par exemple, recopie d'un répertoire qui contient les fichiers d'aide: --add-data ".\aide;aide" ^. Dans cet exemple, on voit la logique: avant le ';' (mais c'est ':' pour Linux/MacOS), c'est le répertoire source, et après, c'est le répertoire destination.
Attention à l'accès aux fichiers de données: l'exécution de l"exe ne voit pas les données au même endroit que le programme .py. Pour trouver le bon répertoire d'exécution, c'est encore dans la notice:
Ainsi, pour que le code retrouve l’icône de la fenêtre graphique dans tous les cas, il faudra recalculer son chemin: os.path.join(REPEXE, "monicone.png").
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 # Répertoire d'exécution avec ou sans pyinstaller (onedir ou onefile) if getattr(sys, 'frozen', False): REPEXE = sys._MEIPASS # programme traité par pyinstaller else: REPEXE = os.path.dirname(os.path.abspath(__file__)) # prog. normal
Quant à ajouter des modules que pyinstaller n'a pas trouvé, je n'ai jamais eu le problème jusqu'à présent. Je suggère d'essayer les options --add-binary SRC;DEST ou --hidden-import MODULENAME comme indiqué dans la notice dont je rappelle le lien: https://pyinstaller.readthedocs.io/e...here-to-search.
Je vais essayer votre idée, merci beaucoup
Bonjour
Puisque ça n'a pas l'air de marcher, voilà une idée supplémentaire. Mais comme je ne connais ni pandas ni Geopandas, elle restera générale.
Il est rare que pyinstaller ne trouve pas un module importé par le code, mais ça peut arriver si, par exemple, le module est importé dans le code de façon inhabituelle (avec __import__ par exemple).
Quand un truc ne marche pas, il faut commencer par explorer la doc, et celle de pyinstaller traite de cette question: https://pyinstaller.readthedocs.io/e...r-find-modules
Il faudrait donc peut-être utiliser l'option "--hidden-import" en ligne de commande. Et si ça ne suffit pas, il faudra signaler (voir comment dans la doc) avant l'emplacement de ce module à pyinstaller, pour qu'il le trouve.
Comme je n'ai jamais encore rencontré ce problème, je n'ai pas d'autres idées sur cette question.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager