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 ou autre ? [Python 3.X]


Sujet :

Python

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut PyInstaller ou autre ?
    Bonjour

    Je n'arrive pas a créer des executables fonctionnels en python3.6 (sous une machine windows10 64bits, sous linux c'est ok)

    Avec pyinstaller peu importe la manip cela l'installe avec python2.7
    Avec cx_freeze, le programme se crée ainsi que d'autres fichiers( et quand je le lance dans le terminal: (car il se ferme automatiquement si je double click, c'est un programme a utiliser via le shell)
    build/win32...
    File "...six.py", line 82, in _import_module
    __import__(name)
    ModuleNotFoundError: No module named 'queue'
    Avec py2exe , meme pas de compilation :
    File ...mf3.py", line 417, in _scan_opcodes
    yield "store", (names[oparg],)
    IndexError: tuple index out of range
    Vous utilisez quoi pour compiler ? (de préférence en un seul executable)

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Après avoir longtemps utilisé cx_freeze, j'utilise maintenant pyinstaller sous Windows 10 avec Python 3.5, souvent avec PyQt5 (bibliothèque graphique). Et, à ma connaissance, pyinstaller est le seul à créer des versions exécutables en un seul fichier "exe" (option "onefile"). Ça marche très bien.

    Bien sûr, ce que ces programmes font est compliqué, et il faut attentivement lire l'affichage pendant le traitement et ses éventuelles erreurs pour pouvoir introduire des corrections. Par exemple pour ajouter l'importation de modules que le traitement ne trouve pas tout seul. Il faut aussi que le code puisse afficher les éventuelles erreurs d'exécution au lancement: il n'y a rien de pire qu'un exécutable qui plante sans rien dire...

    Pour vérifier que pyinstaller est correctement installé, je suggère de traiter un programme simple, qui peut aller jusqu'à 'print("Concou!")' et être progressivement enrichi au fur et à mesure.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Merci de ta réponse j'ai bien vérifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pip3 install pyinstaller
    Requirement already satisfied: pyinstaller in c:\python3\lib\site-packages (3.3.1)
    Requirement already satisfied: setuptools in c:\python3\lib\site-packages (from pyinstaller) (39.0.1)
    Requirement already satisfied: pefile>=2017.8.1 in c:\python3\lib\site-packages (from pyinstaller) (2017.11.5)
    Requirement already satisfied: macholib>=1.8 in c:\python3\lib\site-packages (from pyinstaller) (1.9)
    Requirement already satisfied: future in c:\python3\lib\site-packages (from pyinstaller) (0.16.0)
    Requirement already satisfied: altgraph>=0.15 in c:\python3\lib\site-packages (from macholib>=1.8->pyinstaller) (0.15)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pip install pyinstaller
    Requirement already satisfied: pyinstaller in c:\python27\lib\site-packages (3.3.1)
    Requirement already satisfied: setuptools in c:\python27\lib\site-packages (from pyinstaller) (39.0.1)
    Requirement already satisfied: pefile>=2017.8.1 in c:\python27\lib\site-packages (from pyinstaller) (2017.11.5)
    Requirement already satisfied: macholib>=1.8 in c:\python27\lib\site-packages (from pyinstaller) (1.9)
    Requirement already satisfied: dis3 in c:\python27\lib\site-packages (from pyinstaller) (0.1.2)
    Requirement already satisfied: future in c:\python27\lib\site-packages (from pyinstaller) (0.16.0)
    Requirement already satisfied: altgraph>=0.15 in c:\python27\lib\site-packages (from macholib>=1.8->pyinstaller) (0.15)
    Cependant quand je le lance avec windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pyinstaller fichier.py --onefile
    >pyinstaller fichier.py
    104 INFO: PyInstaller: 3.3.1
    105 INFO: Python: 2.7.15
    J'ai pourtant bien mis le shebang (avec python3 / python3.6 pour voir si ça changeait quelque chose) dans le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #!/usr/bin/env python3.6
    J'ai essayer aussi ceci
    python3: can't open file 'pyinstaller': [Errno 2] No such file or directory
    mais je n'ai pas de programme pyinstaller.exe dans le dossier P3/scripts et seulement dans P2

    Si tu peux m'envoyer l'executable (il existe?)?

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    C'est après avoir rencontré ce genre d'anomalie que j'évite soigneusement d'installer en même temps Python 2 et Python 3 sur le même Windows. Par exemple, quand tu lances "pyinstaller fichier.py --onefile", Windows prend le dernier "pyinstaller.exe" que tu as installé et pas forcément celui que tu veux. J'ai résolu le problème de la façon suivante: j'installe Python 3 normalement, mais j'utilise WinPython "portable" pour Python 2.7 (https://sourceforge.net/projects/win..._2.7/2.7.13.1/). On peut aussi faire le contraire.

    Je pourrais t'envoyer pyinstaller.exe par MP, mais ce ne serait que du bricolage, et rien ne dit que ça fonctionnerait. Pour résoudre ton problème, essaie plutôt de réinstaller pyinstaller pour Python 3 de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\python3\python.exe -m pip install PyInstaller
    Dans ce cas, on n'utilise pas pip.exe de c:\python3\Scripts, mais le module pip. Et l'adressage absolu garantit que c'est le bon python qui est utilisé. C'est ce que je fais aussi pour les environnements virtuels, et c'est aussi la seule manière de mettre à jour pip lui-même (pip.exe ne peut pas se désinstaller lui-même pendant son exécution!).
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Salut

    Merci, J'ai essayé la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ]c:\python3\python3.exe -m pip install PyInstaller
    Requirement already satisfied: PyInstaller in c:\python3\lib\site-packages (3.3.1)
    Requirement already satisfied: setuptools in c:\python3\lib\site-packages (from PyInstaller) (39.0.1)
    Requirement already satisfied: pefile>=2017.8.1 in c:\python3\lib\site-packages (from PyInstaller) (2017.11.5)
    Requirement already satisfied: macholib>=1.8 in c:\python3\lib\site-packages (from PyInstaller) (1.9)
    Requirement already satisfied: future in c:\python3\lib\site-packages (from PyInstaller) (0.16.0)
    Requirement already satisfied: altgraph>=0.15 in c:\python3\lib\site-packages (from macholib>=1.8->PyInstaller) (0.15)
    Du coup même probleme
    on peut essayer tout de même avec le pyinstaller.exe ?

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Je confirme que vous devez avoir un pyinstaller.exe dans le répertoire c:\python3\Scripts. Est-ce que c'est le cas?

    Sinon, il faut en faire plus: désinstaller et réinstaller.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Effectivement
    Ce que j'ai fais apres coup, désinstaller pyinstaller (et la j'ai vu que j'avais bien un pyinstaller.exe dans /Scripts)
    Puis ré installer

    Le programme se compile et fonctionne, meme si je le lance pas dans le shell
    par contre j'ai eu des Warning lors du build:

    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
    566 INFO: UPX is not available.
    7886 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python3\python3.exe
    7966 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python3\python3.exe
    8046 WARNING: lib not found: api-ms-win-crt-locale-l1-1-0.dll dependency of c:\python3\python3.exe
    8130 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python3\python3.exe
    8210 WARNING: lib not found: api-ms-win-crt-math-l1-1-0.dll dependency of c:\python3\python3.exe
    8460 WARNING: lib not found: api-ms-win-crt-conio-l1-1-0.dll dependency of c:\python3\python36.dll
    8539 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python3\python36.dll
    8621 WARNING: lib not found: api-ms-win-crt-convert-l1-1-0.dll dependency of c:\python3\python36.dll
    8706 WARNING: lib not found: api-ms-win-crt-locale-l1-1-0.dll dependency of c:\python3\python36.dll
    8816 WARNING: lib not found: api-ms-win-crt-time-l1-1-0.dll dependency of c:\python3\python36.dll
    8901 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python3\python36.dll
    8982 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python3\python36.dll
    9059 WARNING: lib not found: api-ms-win-crt-filesystem-l1-1-0.dll dependency of c:\python3\python36.dl
     
    13684 WARNING: lib not found: api-ms-win-crt-conio-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    13769 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    13853 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    13932 WARNING: lib not found: api-ms-win-crt-convert-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    14017 WARNING: lib not found: api-ms-win-crt-time-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    14095 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    14177 WARNING: lib not found: api-ms-win-crt-filesystem-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    14256 WARNING: lib not found: api-ms-win-crt-utility-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    14339 WARNING: lib not found: api-ms-win-crt-environment-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    14455 WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency of c:\python3\DLLs\_ssl.pyd
    14548 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python3\DLLs\unicodedata.pyd
    14634 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python3\DLLs\unicodedata.pyd
    14714 WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency of c:\python3\DLLs\unicodedata.pyd
    14820 WARNING: lib not found: api-ms-win-crt-stdio-l1-1-0.dll dependency of c:\python3\DLLs\pyexpat.pyd
    14898 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python3\DLLs\pyexpat.pyd
    14978 WARNING: lib not found: api-ms-win-crt-heap-l1-1-0.dll dependency of c:\python3\DLLs\py
    En voici les principales

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    J'ai aussi ces warnings, et ça a l'air d'être un bug. le programme exe fonctionne tout de même très bien, et c'est le principal.

    Je venais de t'envoyer mon pyinstaller.exe par MP, mais je préfère que tu n'en ais pas besoin.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Ah d'acc !
    Merci ça fonctionne maintenant

    edit le sujet a été créé

  10. #10
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Je ne sais pas. C'est peut-être l'un des mystères de Windows qui est beaucoup moins clair sur ce genre de problème que les Unix... Je te conseille de créer un nouveau fil sur ce sujet.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Merci en tout cas pour tes réponses!

    Je vais créer le sujet

  12. #12
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2017
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Salut ,

    Je te recommande aussi PyInstaller (que j'ai découvert depuis peu) et je le trouve vraiment bien, par exemple si tu utilises PyQt5, la compilation se fera sans aucun souci. Je me suis crée un script python (qui utilise --onefile ou --onedir, au choix) pour créer mes éxécutables, et ça m'est très pratique. Bon je suis encore loin d'avoir bien compris toutes les possibilités offertes par PyInstaller ...

    a+

  13. #13
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Pour info, voilà ce que j'utilise pour traiter par PyInstaller sous Windows des programmes Python3 + PyQt5.

    Je crée un fichier "monprogramme_onfile.bat" qui contient:

    Code bat : 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
    REM traitement d'un programme graphique Python3 + PyQt5 par pyinstaller
     
    SET programme=monprogramme
     
    IF EXIST build_onefile RMDIR /S /Q build_onefile
    IF EXIST dist_onefile RMDIR /S /Q dist_onefile
     
    pyinstaller ^
    --clean ^
    --noconfirm ^
    --noconsole ^
    --onefile ^
    --noupx ^
    --distpath ".\dist_onefile" ^
    --workpath ".\build_onefile" ^
    --add-data ".\monicone.png;." ^
    --add-data "E:\Programmes\Python35\Lib\site-packages\PyQt5\Qt\translations;PyQt5\Qt\translations" ^
    --icon ".\monicone.ico" ^
    %programme%.py
    PAUSE

    A chaque fois que je modifie le programme python "monprogramme.py", je relance le traitement avec un double-clic sur le fichier .bat dans l'explorateur de fichiers.

    A noter le chargement des fichiers permettant les traductions de PyQt5 (pour avoir "Oui/Non" et pas "Yes/No"). Il faut, bien sûr, ajouter le code pour exploiter.

    Si on a besoin des pilotes SQL, il faut faire aussi un chargement (adapter le chemin):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --add-data "E:\Programmes\Python35\Lib\site-packages\PyQt5\Qt\plugins\sqldrivers;PyQt5\Qt\plugins\sqldrivers" ^
    Je peux utiliser la même chose avec l'option "onedir" pour le même programme puisque j'ai spécialisé les répertoires utilisés par pyinstaller.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  14. #14
    Membre extrêmement actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2018
    Messages : 537
    Points : 634
    Points
    634
    Par défaut
    Oui ca marche bien maintenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  2. Reprendre une procedure dans une autre ?
    Par Poisson Rouge dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2002, 22h51
  3. Réponses: 2
    Dernier message: 10/07/2002, 11h51
  4. Réponses: 2
    Dernier message: 21/05/2002, 10h25
  5. Réponses: 3
    Dernier message: 09/05/2002, 01h39

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