IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Pyinstaller avec des modules Python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2020
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 28
    Par défaut Pyinstaller avec des modules Python
    Bonjour,

    J'ai développé un script Python en 3.X qui utilise le module xmlschema et j'ai en en-tête de ce script les imports suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import xmlschema
    import elementpath
    import os
    J'utilise pyinstaller pour générer un exécutable, j'arrive à le générer mais l'exécutable ne marche pas car il semble qu'il manque des choses.
    Voici la commande que je tape avec pyinstaller pour générer l'exécutable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pyinstaller --onefile checkXsd112.py -—hidden-import xmlschema --hidden-import elementpath --hidden-import os
    Dans le répertoire Build, j'ai un fichier qui contient des warnings :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    This file lists modules PyInstaller was not able to find. This does not
    necessarily mean this module is required for running you program. Python and
    Python 3rd-party packages include a lot of conditional or optional module. For
    example the module 'ntpath' only exists on Windows, whereas the module
    'posixpath' only exists on Posix systems.
     
    Types if import:
    * top-level: imported at the top-level - look at these first
    * conditional: imported within an if-statement
    * delayed: imported from within a function
    * optional: imported within a try-except-statement
     
    IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
               yourself tracking down the missing module. Thanks!
     
    missing module named resource - imported by posix (top-level), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named posix - imported by os (conditional, optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named _posixsubprocess - imported by subprocess (conditional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named org - imported by pickle (optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named lxml - imported by xmlschema.etree (delayed, conditional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named _winreg - imported by platform (delayed, optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named java - imported by platform (delayed), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named 'java.lang' - imported by platform (delayed, optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level), xml.sax._exceptions (conditional)
    missing module named vms_lib - imported by platform (delayed, conditional, optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named 'org.python' - imported by copy (optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level), xml.sax (delayed, conditional)
    missing module named termios - imported by tty (top-level), getpass (optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named _scproxy - imported by urllib.request (conditional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), http.server (delayed, optional), webbrowser (delayed), pathlib (delayed, conditional, optional), netrc (delayed, conditional), getpass (delayed), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named _dummy_threading - imported by dummy_threading (optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), C:\xmlschema-master\test_xsd\checkXsd112.py (top-level)
    Je ne comprends pas ce fichier, j'ai pourtant bien importé les 3 modules dans la ligne de commande de Pyinstaller.

    Sauriez-vous comment générer un exécutable avec Pyinstaller en important xmlschema, os et elementpath ?

    Merci.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 683
    Par défaut
    Salut,

    Citation Envoyé par speedcristal Voir le message
    mais l'exécutable ne marche pas car il semble qu'il manque des choses.
    Le message d'erreur n'est pas une fioriture sans intérêt pour trouver une solution... Dont la recherche commence par farfouiller un peu sur Internet pour voir si d'autres n'ont pas eu le même genre de problème...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour

    Il y a une page intéressante de la doc de pyinstaller quand ça va mal (à traduire avec google):
    https://pyinstaller.org/en/stable/wh...-go-wrong.html

    => Il reste que je n'ai jamais été obligé jusqu'à présent de préciser des importations python que pyinstaller ne trouve pas tout seul.

    Voilà la liste des paramètres que j'utilise couramment. Ici, placés dans un fichier .bat sous Windows (le "^" supprime la "fin de ligne"):

    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=sauvincrem
     
    IF EXIST build RMDIR /S /Q build
    IF EXIST dist RMDIR /S /Q dist
     
    pyinstaller ^
    --clean ^
    --noconfirm ^
    --onefile ^
    --noupx ^
    --icon ".\monicone.ico" ^
    %programme%.py
    PAUSE
    Pour les programmes graphiques, on ajoute:
    --noconsole ^

    pyinstaller ne s'intéresse qu'aux fichiers python. Alors, quand on doit ajouter des fichiers non-python ou des bibliothèques système, on le fait avec "--add-data". On précise alors après le ";" à quel endroit on les met dans la version exe. Par exemple:

    - pour ajouter des images, par exemple une icône nécessaire à un programme graphique:
    --add-data ".\icone.png;." ^

    - pour ajouter des fichiers d'aide, y compris pour ajouter le répertoire les contenant:
    --add-data "aide;aide" ^

    - pour ajouter un répertoire de pilotes SQL de la bibliothèque graphique PyQt5:
    --add-data "cheminvers\site-packages\PyQt5\Qt\plugins\sqldrivers;PyQt5\Qt\plugins\sqldrivers" ^

    - ou pour ajouter un répertoire de fichiers nécessaires à la traduction sous PyQt5:
    --add-data "cheminvers\site-packages\PyQt5\Qt\translations;PyQt5\Qt\translations" ^

    - pour ajouter un fichier de configuration initiale:
    --add-data ".\%programme%.ini;." ^

    - Etc...

    Il existe beaucoup d'autres particularités: voir la doc:
    https://pyinstaller.org/en/stable/

    [edit]: il faut ajouter que si on intègre un fichier non-python (image, fichier d'aide, etc...), il faut corriger son adresse pour que le programme exécutable puisse le retrouver. On peut faire ça pour que le programme python fonctionne dans les 2 cas (version .py et version .exe):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        # Répertoire d'exécution avec ou sans pyinstaller
        if getattr(sys, 'frozen', False):
            REPEXE = sys._MEIPASS # programme traité par pyinstaller
        else:
            REPEXE = os.path.dirname(os.path.abspath(__file__)) # prog. normal

Discussions similaires

  1. [Techniques et Conseils] Creer un logiciel extensible ( avec des modules )
    Par handsome01 dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 12/01/2014, 23h59
  2. Classes PyQt et doublons avec des modules Python
    Par Neitsa dans le forum PyQt
    Réponses: 4
    Dernier message: 20/09/2011, 12h24
  3. Réponses: 0
    Dernier message: 10/09/2010, 17h30
  4. release perform problème avec des modules
    Par storm_2000 dans le forum Maven
    Réponses: 4
    Dernier message: 29/12/2009, 00h13
  5. évolution des modules python et pygame
    Par kromartien dans le forum Programmation multimédia/Jeux
    Réponses: 1
    Dernier message: 15/03/2008, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo