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 :

Générer un exe avec pyinstaller [Python 3.X]


Sujet :

Python

  1. #1
    Membre confirmé Avatar de pio_killer
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 194
    Par défaut Générer un exe avec pyinstaller
    Bonjour,

    je débute en python et j'ai un soucis.

    J'ai fais ce script pour convertir en ligne de commande un xlsx en csv.

    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
    # -*- coding: utf-8 -*-
     
    from pandas import read_excel as read_xls
    import sys
     
    def main(arg1, arg2):
        path_source = arg1
        path_destination = arg2
        print("Debut du traitement")
        print("Fichier XLS : " + path_source)
        print("Fichier CSV : " + path_destination)
     
        df = read_xls(path_source)
        df.to_csv(path_destination, encoding='utf-8', index = None,  header=True, sep = ';')
        print("Fini")
     
     
    main(sys.argv[1],sys.argv[2])

    J'utilise anaconda et j'ai crée un environnement pour y mettre que les library necessaire.

    Or l'exe généré avec pyinstaller fait 300mo. Je pense qu'il y a des lib en trop....

    J'utilise la commande suivante (en ayant pris soin d'être sur le bon environnement):
    pyinstaller --onefile --ascii --clean "C:\Users\moi\Documents\XLS_To_CSV.py"
    Est-ce qu'il y a un moyen de dire à pyinstaller de ne prendre que les library necessaire ?
    Je sais qu'il y a "Exclude" mais il faut déjà savoir quoi enlever et là je suis largué

    Voici les library que j'ai dans l'environnement :
    Package                   Version
    ------------------------- ---------
    altgraph                  0.17
    astroid                   2.4.2
    Bottleneck                1.3.4
    certifi                   2021.10.8
    colorama                  0.4.4
    et-xmlfile                1.1.0
    future                    0.18.2
    isort                     5.6.4
    lazy-object-proxy         1.4.3
    macholib                  1.14
    mccabe                    0.6.1
    mkl-fft                   1.3.1
    mkl-random                1.2.2
    mkl-service               2.4.0
    numexpr                   2.8.1
    numpy                     1.21.5
    openpyxl                  3.0.9
    packaging                 21.3
    pandas                    1.4.1
    pefile                    2019.4.18
    pip                       21.2.2
    pycryptodome              3.12.0
    pygubu                    0.10.3
    pyinstaller               4.8
    pyinstaller-hooks-contrib 2020.11
    pylint                    2.6.0
    pyparsing                 3.0.4
    python-dateutil           2.8.2
    pytz                      2021.3
    pywin32                   302
    pywin32-ctypes            0.2.0
    setuptools                58.0.4
    six                       1.15.0
    tk                        0.1.0
    toml                      0.10.1
    wheel                     0.37.1
    wincertstore              0.2
    wrapt                     1.12.1
    Merci d'avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Sous Linux (Debian), ton code converti ne fait que 168Mo. Mais il faut savoir que pyinstaller génère un dossier "build" et un autre "dist" mais l'exécutable proprement dit se trouve dans "dist" et "build" ne sert plus à rien ensuite (j'ai même écrit un script pour générer un exécutable qui justement se charge de supprimer "build" et renommer "dist" dans le nom de mon exec)
    Ensuite ben je pense que les 168Mo ce sont pandas, xlrd etc qui sont probablement nécessaires.

    Sinon l'autre solution est de prendre la liste que tu cites et exclure les éléments les uns après les autres en regénérant l'exécutable à chaque fois. Chaque fois que ça marche tu gardes, chaque fois que ça échoue tu remets l'élément exclu.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé Avatar de pio_killer
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 194
    Par défaut
    Salut

    Merci pour ta réponse.
    Je vais essayé de faire petit à petit comme tu m'as dit.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pio_killer Voir le message
    Je vais essayé de faire petit à petit comme tu m'as dit.
    Autre solution: tu installes une machine virtuelle (VirtualBox) sur laquelle tu installes ton OS ainsi qu'un Python de base. Puis tu ne lui rajoutes que les librairies dont tu as besoin pour ton programme (panda, xlrd, etc) et là tu génères ton exécutable.
    Car si chez-moi il fait 160Mo c'est que probablement j'ai moins de librairies que toi d'installées mais s'il fait quand-même 160Mo c'est probablement parce que PyInstaller récupère toutes les librairies de mon OS dont la majorité ne sont probablement pas nécessaires pour le programme...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 919
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Citation Envoyé par Sve@r Voir le message
    Autre solution: tu installes une machine virtuelle (VirtualBox) sur laquelle tu installes ton OS ainsi qu'un Python de base. Puis tu ne lui rajoutes que les librairies dont tu as besoin pour ton programme (panda, xlrd, etc) et là tu génères ton exécutable.
    ou bien simplement partir sur un environnement virtuel ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /tmp :python3 -m venv ve
    /tmp :cd ve
    /tmp/ve :source bin/activate
    (ve) /tmp/ve :pip list
    Package       Version
    ------------- -------
    pip           20.0.2 
    pkg-resources 0.0.0  
    setuptools    44.0.0 
    (ve) /tmp/ve

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set filename=toto
    pyinstaller  -F %filename%.py 
    pause
    J'ai fais le test chez moi sous Windows 11, l'exécutable fait 6696 ko...

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    ou bien simplement partir sur un environnement virtuel ....
    Hum... ça je ne sais pas encore faire...(mais à te lire ça à l'air super simple...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 919
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Hum... ça je ne sais pas encore faire...(mais à te lire ça à l'air super simple...)
    Oui, c'est facile à utiliser. https://docs.python.org/fr/3/library/venv.html
    Normalement, à la création de chaque projet on devrait utiliser d'un environnement virtuel, ce qui permet de travailler sans risque de casser son système (chaque projet disposent ainsi d'un écosystème indépendant, pouvant donc utiliser une version précise d'une dépendance)
    Très pratique aussi pour tester...

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Oui, c'est facile à utiliser. https://docs.python.org/fr/3/library/venv.html
    Oui, j'ai essayé. Ca marche bien. Evidemment dans l'environnement virtuel j'ai dû tout réinstaller et ça a pris un peu de temps.

    Citation Envoyé par Hominidé Voir le message
    Normalement, à la création de chaque projet on devrait utiliser d'un environnement virtuel, ce qui permet de travailler sans risque de casser son système (chaque projet disposent ainsi d'un écosystème indépendant, pouvant donc utiliser une version précise d'une dépendance)
    Oui je comprends l'idée.

    Citation Envoyé par LeNarvalo Voir le message
    J'ai fais le test chez moi sous Windows 11, l'exécutable fait 6696 ko...
    Hum, après avoir installé Pandas, le dossier virtuel de la méthode Hominidé pèse 235Mo. J'ai pas généré d'exécutable mais j'ai du mal à imaginer que celui-ci descendra jusqu'à 6Mo. Il fonctionne au-moins? Tu as pu générer un csv à partir d'un xslx?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Oui, c'est facile à utiliser. https://docs.python.org/fr/3/library/venv.html
    Normalement, à la création de chaque projet on devrait utiliser d'un environnement virtuel, ce qui permet de travailler sans risque de casser son système (chaque projet disposent ainsi d'un écosystème indépendant, pouvant donc utiliser une version précise d'une dépendance)
    Très pratique aussi pour tester...
    C'est une base en effet ! J'ajoute que lorsque l'on souhaite une version précise de Python, et qu'elle n'est pas présente sur son système, on l'installe en évitant d'écraser son Python "système principal" en compilant les sources et en utilisant "make altinstall" et non "make install".

    Ensuite on crée son environnement virtuel, on l'active et on installe ses modules python utiles au projet. Une fois cela terminé, on crée un fichier texte, par ex. "requirements.txt" en utilisant une commande pip (d'autres existent, comme "poetry", ...) : pip freeze > requirements.txt

    Nos dépendances sont écrites dans ce fichier texte et permettent une récupération rapide "Git + environnement virtuel + pip install -r requirements.txt"

  11. #11
    Membre confirmé Avatar de pio_killer
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 194
    Par défaut
    Bon j'ai avancé.

    Finalement je suis repartis de zéro.
    J'ai désinstallé anaconda et supprimé toute trace de lui, python, etc ...

    Ensuite j'ai installé que python et après avoir fait petit à petit des tests, j'ai trouvé que les library nécessaires sont pandas et openpyxl (normal)

    J'ai fait l'executable avec "auto-py-to-exe" qui je crois fait la même chose que pyinstaller
    Et là l'exe fait 22mo

    Donc j'en déduis que c'est peut-être anaconda qui alourdissait.

    Et pour ce qui est de l'environnement virtuel, si je ne me trompe pas c'est ce que j'avais fait dans anaconda. Donc il aurait du y avoir que les lib minimum.

    En tout cas merci pour votre aide à tous

  12. #12
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    En faisant une recherche, on voit des topics dédiés à cette problématique de fichier trop gros comme ICI par exemple.

    Certains ont déjà testé et font des remarques sur les attentions particulières à prendre quand on utilise l'environnement principal.

    don't add Anaconda Python as the default python. Also don't add its path to the system variables
    Je connais pas Anaconda, mais il semble qu'une option ne doit pas être activée.

    pyinstaller -F -w --clean file.py
    Est-ce que ces options suite à la commande pyinstaller ont été appliqué dans tes précédents essais ?

    Au final l'essentiel est que ton problème soit réglé

  13. #13
    Membre confirmé Avatar de pio_killer
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 194
    Par défaut
    Pour l'option clean oui je l'avais essayé mais pas -F et -W
    Vu que c'est mes début pour moi (je tatonne), je comprendrais de mieux en mieux avec le temps ces commandes

    Maintenant je vais m'attaquer à faire un interface avec tkinter pour continuer ma progression....

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Hum, après avoir installé Pandas, le dossier virtuel de la méthode Hominidé pèse 235Mo. J'ai pas généré d'exécutable mais j'ai du mal à imaginer que celui-ci descendra jusqu'à 6Mo. Il fonctionne au-moins? Tu as pu générer un csv à partir d'un xslx?
    Non ^^

    J'avais même pas pandas sur mon pc

    94Mo maintenant mais marche pas

  15. #15
    Membre confirmé Avatar de pio_killer
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 194
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Non ^^

    J'avais même pas pandas sur mon pc

    94Mo maintenant mais marche pas
    Là je sais pas dire pourquoi...

    Je pense que je n'avais spécifié. Je suis sur win10. Est-ce que ça vient de là ??...

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

Discussions similaires

  1. [Python 3.X] comment modifier l'icône de l'aplication .exe avec pyinstaller
    Par IVK2000 dans le forum Général Python
    Réponses: 2
    Dernier message: 06/10/2021, 00h05
  2. [Python 2.X] Générer un .exe avec py2exe, cx_freeze ou pyinstaller
    Par lesjj10 dans le forum Général Python
    Réponses: 0
    Dernier message: 06/01/2017, 12h18
  3. Générer un .exe avec VS2010
    Par paladice dans le forum Visual Studio
    Réponses: 4
    Dernier message: 20/04/2012, 09h02
  4. Conseils pour générer un exe avec VS 2005
    Par Jitoubi dans le forum Visual Studio
    Réponses: 4
    Dernier message: 10/03/2010, 16h22
  5. Générer un exe d'une appli PDA avec Visual studio 2005
    Par ___jul dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 17/01/2008, 22h56

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