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

PyQt Python Discussion :

Déploiement d'une application


Sujet :

PyQt Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut Déploiement d'une application
    Bonjour à tous,

    Voilà je cherche en vain comment créer un seul .exe de mon application avec PyInstaller et ou py2exe mais aucun ne fonctionne :/. Avec py2exe quand je lance l'exe dans les log il me dit que le module thread n'existe pas. thread étant un espace de nom dans mon application. Je ne sais pas si c'est comme ça qu'on le défini dans le setup.py

    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
     
    from distutils.core import setup
    import py2exe
     
    files = [
        ('', ['icon.png']),
        ('ui', ['ui/mainwindow.py']),
        ('tools', ['tool/zip.py']),
        ('thread', ['thread/zip.py', 'thread/ftp.py']),
        ('filter_event', ['filter_event/txt_name_filter.py']),
        ]
     
    setup(
        windows=['mainwindow.py'],
        name="Mon App",
        data_files=files,
        options= {'py2exe': {
            "optimize": 2,
            "bundle_files": 3
        }}, requires=['PySide']
    )
    Par la même occasion je serais plus intéressé par PyInsaller qui permet d'avoir un seul .exe contenant toute l'application mais je ne sais pas quoi définir dans le .spec

    Merci d'avance.

  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,

    Dans la mesure où tu abandonnes l'idée de n'avoir qu'un seul exe, je peux te proposer cx_freeze (http://cx-freeze.sourceforge.net/) que j'utilise couramment.

    Il fonctionne sur Python 2 et 3, et il est multiplateforme (Windows - Linux - Mac OSX)

    Mon tuto est ici: http://python.jpvweb.com/mesrecettes...p?id=cx_freeze
    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
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut


    Je ne sais pas s'il produit un fichier un fichier unique mais tu as aussi pyqtdeploy qui peut t'aider.

    Bon courage.

    ++

    J
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    Ça fonctionne avec PySide ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    La solution de Tyrtamos : oui
    La mienne : j'avoue ne pas savoir. Être sous PySide est vraiment obligatoire pour toi ?

    Les différences entre les deux bindings sont (dans les grandes lignes :



    Plus d'infos sur les différences ici.

    Bonne continuation.


    J
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    J'ai essayé cx_freeze, je n'arrive pas à le faire fonctionner :/ (je suis sous windows). La liste includes contient les fichiers de mon projet ?

  7. #7
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par tuto de tyrtamos
    includes = [ ] # nommer les modules non trouves par cx_freeze
    Si tu as un doute sur ces dits modules, tu peux tester en n'en mettant aucun, puis le premier qui fait boguer ton programme tu l'ajoutes, etc ... etc ... etc ... J'espère juste pour toi que tu n'en as pas de trop
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  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
    Commence donc par faire traiter par cx_freeze un programme minimum type "print("coucou"): tu verras déjà si ton cx_freeze est bien installé, et ça te fera une 1ère expérience.

    Avec des programmes plus complexes, cx_freeze trouve déjà des tas de choses lui-même, et quand il ne trouve pas (cf messages), il faut l'aider un peu.
    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 à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    Le soucis c'est qu'il ne trouve pas la commande cxfreeze, pourtant j'ai ajouté D:\Python34\Scripts\ dans le path sachant que l'exécutable se situe ici. Et c'est ce que je trouve dans les différents tuto.

  10. #10
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par Rtransat Voir le message
    Le soucis c'est qu'il ne trouve pas la commande cxfreeze, pourtant j'ai ajouté D:\Python34\Scripts\ dans le path sachant que l'exécutable se situe ici. Et c'est ce que je trouve dans les différents tuto.
    Qu'entends tu par "il ne trouve pas la commande cxfreeze" ???

    Je n'utilise pas cet outil, mais il me semble que c'est cx_Freeze qu'il faut mettre... dans un script python, par convention (me semble-t-il) nommé setup.py et ensuite lancer ce script pour généré ton exe.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    Sous Windows, via Git Bash quand je tape cxfreeze j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /d/python34/Scripts/cxfreeze: c:\python\32-bit\3.4\python.exe: bad interpreter: No such file or directory
    Le truc c'est que python n'est pas dans : c:\python\32-bit\3.4\python.exe mais dans /d/python34/

    Et via la commande Windows : cxfreeze ou cx_Freeze n'est pas reconnu.

    Si j'essaye via le tuto de Tyrtamos : python setup.py build je remplace monprogramme1.pyw par loginwindow.py car je n'ai pas de fichier .pyw

    Voici le message de retour :

    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
     
    Missing modules:
    ? _dummy_threading imported from dummy_threading
    ? ce imported from os
    ? doctest imported from heapq
    ? getopt imported from base64, quopri
    ? grp imported from shutil, tarfile
    ? mysql.connect imported from __main__, mainwindow
    ? org.python.core imported from copy
    ? os.path imported from os, py_compile, shutil
    ? posix imported from os
    ? pwd imported from posixpath, shutil, tarfile
    ? subprocess imported from os
    ? thread.ftp imported from addwindow
    ? thread.zip imported from addwindow
    ? tool.zip imported from addwindow
    ? ui.addwindow imported from addwindow
    ? ui.loginwindow imported from __main__
    ? ui.mainwindow imported from mainwindow
    This is not necessarily a problem - the modules may not be needed on this platform.
    Je ne sais pas ou insérer les modules manquants. J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    includes = ['thread/ftp.py']
    Ça ne fonctionne pas, j'ai donc tenté dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    packages = ['thread/ftp.py']
    Même problème il me renvoie une erreur. Quel est la convention pour ajouter d'autres fichiers ?

  12. #12
    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,

    La question: est-ce ton programme s'exécute?

    Parce qu'il est bien marqué à la fin du message d'alerte: "This is not necessarily a problem - the modules may not be needed on this platform."

    En fait il y a TOUJOURS ce genre de message. Par exemple, il dit qu'il ne trouve pas "posix", mais si tu es sous Windows, ça n'a aucune importance.

    Essaie d'exécuter à partir d'une console (pour avoir les éventuels messages d'erreur)
    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

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    J'ai édité mon message Tyrtamos . Je suis sur un autre problème maintenant :/

    Je mets le message ici pour plus de cohérence dans la chronologie du topic :

    Bon j'ai réussi , mais il reste un problème :/. Quand je lance mon programme il ne trouve pas la connexion à la base de donnée MySQL, alors que lors de mon dev quand je lance python loginwindow.py ça fonctionne bien.

    Quand je lance le programme j'ai Driver not loaded. Si je test via : QtSql.QSqlDatabase.isDriverAvailable('QMYSQL') en mode "dev" ça retourne True, et dans le build ça retourne False :/

    Et quand je tente de me connecter, on arrive dans le else (logique vu que la connexion ne se fait pas):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        def clicked_btn_login(self):
            query = QtSql.QSqlQuery()
            query.prepare("SELECT email, password FROM users WHERE email = :email AND password = MD5(:password)")
            query.bindValue(":email", self.txt_email.text())
            query.bindValue(":password", self.txt_password.text())
            query.exec_()
     
            if query.next():
                self.mainwindow = MainWindow()
                self.mainwindow.show()
                self.close()
            else:
                QtGui.QMessageBox.information(self, "Error", "There were some problems with your input")

    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python 3
     
    """
    Icone sous Windows: il faut:
    => un xxx.ico pour integration dans le exe, avec "icon=xxx.ico"
    => un xxx.png pour integration avec PyQt4 + demander la recopie avec includefiles.
    """
     
    import sys, os
    from cx_Freeze import setup, Executable
     
    #############################################################################
    # preparation des options
     
    # chemins de recherche des modules
    # ajouter d'autres chemins (absolus) si necessaire: sys.path + ["chemin1", "chemin2"]
    path = sys.path
     
    # options d'inclusion/exclusion des modules
    includes = ['ftplib', 'zipfile']  # nommer les modules non trouves par cx_freeze
    excludes = []
    packages = []  # nommer les packages utilises
     
    # copier les fichiers non-Python et/ou repertoires et leur contenu:
    includefiles = [
        ('ui'),
        ('mainwindow.py'),
        ('addwindow.py'),
        ('thread'),
        ('tool'),
        ('mysql')
    ]
     
    if sys.platform == "win32":
        pass
        # includefiles += [...] : ajouter les recopies specifiques à Windows
    elif sys.platform == "linux2":
        pass
        # includefiles += [...] : ajouter les recopies specifiques à Linux
    else:
        pass
        # includefiles += [...] : cas du Mac OSX non traite ici
     
    # pour que les bibliotheques binaires de /usr/lib soient recopiees aussi sous Linux
    binpathincludes = []
    if sys.platform == "linux2":
        binpathincludes += ["/usr/lib"]
     
    # niveau d'optimisation pour la compilation en bytecodes
    optimize = 0
     
    # si True, n'affiche que les warning et les erreurs pendant le traitement cx_freeze
    silent = True
     
    # construction du dictionnaire des options
    options = {"path": path,
               "includes": includes,
               "excludes": excludes,
               "packages": packages,
               "include_files": includefiles,
               "bin_path_includes": binpathincludes,
               "create_shared_zip": False,  # <= ne pas generer de fichier zip
               "include_in_shared_zip": False,  # <= ne pas generer de fichier zip
               "compressed": False,  # <= ne pas generer de fichier zip
               "optimize": optimize,
               "silent": silent
    }
     
    # pour inclure sous Windows les dll system de Windows necessaires
    if sys.platform == "win32":
        options["include_msvcr"] = True
     
    #############################################################################
    # preparation des cibles
    base = None
    if sys.platform == "win32":
        base = "Win32GUI"  # pour application graphique sous Windows
        # base = "Console" # pour application en console sous Windows
     
    icone = None
    if sys.platform == "win32":
        icone = "icon.ico"
     
    cible_1 = Executable(
        script="loginwindow.py",
        base=base,
        compress=False,  # <= ne pas generer de fichier zip
        copyDependentFiles=True,
        appendScriptToExe=True,
        appendScriptToLibrary=False,  # <= ne pas generer de fichier zip
        icon=icone
    )
     
    cible_2 = Executable(
        script="loginwindow.py",
        base=base,
        compress=False,
        copyDependentFiles=True,
        appendScriptToExe=True,
        appendScriptToLibrary=False,
        icon=icone
    )
     
    #############################################################################
    # creation du setup
    setup(
        name="MyApp",
        version="1.00",
        description="MyApp",
        author="Me",
        options={"build_exe": options},
        executables=[cible_1, cible_2]
    )
    PS : par la même occasion le dossier build généré fait 30Mo... ça me paraît extrêmement lourd pour mon programme.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    C'est résolu .

    Maintenant c'est possible d'avoir tout dans un seul fichier exe ? . Ou en tout cas que mes fichiers .py ne soit pas tel quel, c'est-à-dire que si je donne l'application à quelqu'un le code source est visible :/. Et on trouve notamment les infos de connexion à la base de donnée.

  15. #15
    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
    Si tu as utilisé mon setup.py, le répertoire de ton exe comporte un sous répertoire plugins dans lequel a été recopié les plugins de Qt, y compris les pilotes SQL.

    Mais ça ne suffit pas, parce que pyqt ne le sait pas encore!

    Essaie ceci: place au même niveau que ton exe un fichier texte appelé "qt.conf" et contenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [Paths] 
    Prefix = .
    Binaries = . 
    Libraries = .
    Plugins = plugins
    Translations = translations
    Imports = .
    Headers = .
    Documentation = .
    Son but est de renseigner au lancement de l'exe de l'emplacement des répertoires de plugins et de traductions.
    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

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2014
    Messages : 58
    Points : 20
    Points
    20
    Par défaut
    Je n'ai pas de dossier "plugins" en utilisant ton setup.py. Mais sinon j'ai copié les dll qmysql et ça fonctionne .

    Le truc c'est d'avoir les sources non visible pour les utilisateurs utilisant le programme.

  17. #17
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Une fois l'exe créé tu es sûr que les sources sont encore nécessaires?
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  18. #18
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 242
    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 242
    Points : 36 699
    Points
    36 699
    Par défaut
    Citation Envoyé par Rtransat Voir le message
    Maintenant c'est possible d'avoir tout dans un seul fichier exe ? . Ou en tout cas que mes fichiers .py ne soit pas tel quel, c'est-à-dire que si je donne l'application à quelqu'un le code source est visible :/.
    Les fichiers .py sont stockés dans un fichiers .zip mais "compilés" (i.e. des .pyc).
    Un seul fichier exécutable n'apporte pas grand chose car le package sera dezippé dans des répertoires temporaires: le temps de lancement de l'application sera un peu plus long... mais vous aurez accès aux mêmes fichiers.


    Citation Envoyé par Rtransat Voir le message
    Et on trouve notamment les infos de connexion à la base de donnée.
    Techniquement, çà veut dire que changer le mot de passe implique reconstruire et redeployer l'application....
    Pourquoi ne pas forcer l'utilisateur a entrer un identifiant/mot de passe bien à lui qu'on pourra éventuellement stocker dans ses fichiers personnels.
    A défaut, il tapera dans le SGDB avec un profil sans droits. Et s'il se fait voler son identifiant/mot de passe, ce n'est plus votre problème.

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

Discussions similaires

  1. Déploiement d'une application.
    Par Whenseslass dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 03/08/2006, 18h18
  2. Tomcat 5.5: déploiement d'une application, config server.xml
    Par yizashi dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 02/04/2006, 18h20
  3. [Déploiement] Diffuser une application java
    Par lilli1407 dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 31/01/2006, 17h49
  4. [D7][ORACLE 8i] déploiement d'une application
    Par Magnus dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/10/2005, 17h40
  5. Réponses: 2
    Dernier message: 15/04/2002, 13h56

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