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 :

Exécuter Python en autonome


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut Exécuter Python en autonome
    Bonjour,

    J'ai créé dernièrement un projet que j'aimerais déployer en autonome sur certains pc. J'ai recherché sur Internet et j'y ai trouvé PYInstaller, sauf que ce dernier ne fonctionne pas correctement avec le module Openpyxl.

    Pour contourner ce problème, je me suis dis que je pourrais aussi isoler les modules dans un répertoire en y ajoutant l'exécutable Python (à la sauvage) et c'est là que j'ai un problème : comment m'assurer que j'ai toutes les bibliothèques nécessaires sans que Python les recherche en utilisant le pythonpath.

    Je cherche un moyen d'isoler cet environnement pour qu'il représente un pc sur lequel Python n'a pas été installé, auriez-vous quelques idées? Ou toutes autres solutions seraient aussi bienvenue.


    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    Bonjour,

    J'ai redécouvert la discussion suivante (parce que je l'avais déjà vue, mais j'arrivais pas à la retrouver) :
    http://www.developpez.net/forums/d13...rtable-python/

    Je vais essayer Setuptools dans la soirée et voir ce que je peux en tirer.

    Je reste ouvert à toutes autres idées si vous en avez.

    Merci.

  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,

    En ce qui me concerne, j'utilise couramment cx_freeze avec la méthode du setup.py, et j'arrive à traiter des programmes déjà gros et complexes. L'intérêt d'utiliser un setup, c'est qu'on peut indiquer à cx_freeze les modules qu'il n'arrive pas à trouver tout seul. Et il existe une option ("include_msvcr") pour incorporer les dll de Windows nécessaires, ce qui permet de ne pas les chercher sur un PC qui a une autre version de Windows.

    J'ai aussi essayé pyinstaller qui marche bien. Je ne l'utilise pour l'instant que pour de petits projet, parce qu'il permet de tout mettre dans un exe. Mais, contrairement à cx_freeze, il ne permet pas de fournir plusieurs exe en même temps qui se partagent les mêmes bibliothèques.

    La solution avec un python portable est bien aussi: sous Windows, j'utilise maintenant winpython (j'utilisais avant pythonportable). Le problème avec les Python portables est qu'ils contiennent beaucoup de modules mais pas forcément celui qu'on veut, et qu'il n'est pas toujours possible d'en ajouter. En gros, il est possible d'installer des modules en pur Python, mais pas forcément les autres.

    En résumé, c'est cx_freeze que j'utilise le plus souvent.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    Bon, j'ai installé Setuptool sur mon pc et j'ai lancé le programme pour compiler mon module. Résultat : pas glorieux.

    Je dois avoir une cervelle de moineau parce que j'ai rien compris à la doc après une première lecture avant installation et relecture après. De plus, je n'ai pas trouvé à un seul endroit sur le site la façon de lancer le module compilé Bref, j'ai en plus remarqué qu'il faut avoir un compte sur Pypi pour y mettre le projet.

    Trop déçu, j'ai tout laissé tombé et j'ai essayé d'installer cx_freezer. Manque de bol, l'installation s'est bien déroulé jusqu'à... bref, j'ai eu une erreur et c'est totalement inexploitable maintenant.

    Voici ce que j'ai eu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        copying cx_Freeze\samples\zope\setup.py -> build\lib.win-amd64-3.5\cx_Freeze\samples\zope
        running build_ext
        building 'cx_Freeze.util' extension
        error: [WinError 2] Le fichier spÚcifiÚ est introuvable
     
        ----------------------------------------
    Command "c:\users\admin\appdata\local\programs\python\python35\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-ydem5wcx\\cx-Freeze\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record C:\Users\admin\AppData\Local\Temp\pip-1qya7n82-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\admin\AppData\Local\Temp\pip-build-ydem5wcx\cx-Freeze\
    Existe-t-il de bons tuto pour setuptool ou cx_freezer?

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur banc de test
    Inscrit en
    Mai 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur banc de test
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2014
    Messages : 199
    Par défaut
    Bonjour,

    pour installer cx_Freeze il existe la version exécutable disponible pour Python v 2.7 et 3.4 :

    https://pypi.python.org/pypi/cx_Freeze

    Pour ce qui est des réglages du fichier setup :

    cx-freeze.readthedocs.org/distutils

    Voilà un modèle que j'utilise qui recense la plupart des réglages disponibles :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    # -*- coding: utf-8 -*-
    # Python 3
    # ___________________________________________________________________________
    #
    # http://cx-freeze.readthedocs.org/en/latest/distutils.html
    # ___________________________________________________________________________
     
    from cx_Freeze import setup, Executable # Create standalone executables from Python scripts
    import os # Miscellaneous operating system interfaces
    import os.path # Common pathname manipulations
    import sys # System-specific parameters and functions
     
    import mon_script as source ##
     
    hide_console_application = False
    icon_file = None
     
    if __name__ == '__main__': # {
        replace_paths_list = [
            (os.path.abspath("."), "."),
        ]
     
        excludes_list = []
        includes_list = []
        packages_list = []
     
        include_files_list = []
     
        zip_includes_list = []
        bin_includes_list = []
        bin_excludes_list = []
     
        bin_path_includes_list = []
        if sys.platform == "linux2": bin_path_includes_list += ["/usr/lib"]
     
        bin_path_excludes_list = []
     
        # GUI applications require a different base on Windows (the default is for a console application)
        base = None
     
        if sys.platform == "win32": # {
            base = "Win32GUI"
        # }
     
        executables = [
            Executable(
                script=source.__file__,
                initScript=None,
                base=[None, base][hide_console_application],
                path=None,
                targetDir=None,
                targetName=None,
                icon=icon_file,
                shortcutName=None,
                shortcutDir=None
            )
        ]
     
        build_exe_options = {
            'optimize': 0,
            'excludes': excludes_list,
            'includes': includes_list,
            'packages': packages_list,
            'namespace_packages': [],
            'replace_paths': replace_paths_list,
            'path': sys.path,
            'compressed': True,
            'constants': [],
            'include_files': include_files_list,
            'zip_includes': zip_includes_list,
            'bin_includes': bin_includes_list,
            'bin_excludes': bin_excludes_list,
            'bin_path_includes': bin_path_includes_list,
            'bin_path_excludes': bin_path_excludes_list,
            'create_shared_zip': False,
            'copy_dependent_files': True,
            'include_in_shared_zip': False,
            'append_script_to_exe': True,
            'icon': icon_file,
            'silent': False,
        }
     
        setup(
            options={'build_exe': build_exe_options},
            executables=executables,
        )
    # } __main__
    Il suffit ensuite de lancer ce script avec l'argument : build_exe

Discussions similaires

  1. problème d'exécution python
    Par marie bioch dans le forum Général Python
    Réponses: 7
    Dernier message: 12/01/2016, 23h04
  2. Exécution python depuis php avec création de fichier
    Par Lologramme dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 02/01/2016, 07h03
  3. Exécution d'un autonomous job - could not find or load main class
    Par liv2011 dans le forum Exécution et industrialisation
    Réponses: 1
    Dernier message: 16/04/2015, 16h15
  4. Création d'exécutable python
    Par dbpython dans le forum Déploiement/Installation
    Réponses: 0
    Dernier message: 24/07/2009, 09h41
  5. [Système] Exécuter script python depuis php
    Par philpython dans le forum Langage
    Réponses: 1
    Dernier message: 22/03/2007, 13h57

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