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 :

Python exe sql


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Python exe sql
    Bonjour,
    J'ai crée une interface graphique pour une database avec tkinter (contenant des commandes renvoyant à des fichiers ayant un répertoire différents). Lorque je veux rendre mon programme exécutable à l'aide de pyintaller, j'obtiens bien un fichier exe sauf que quand je le lance il me renvoie le fichier de ma database au format (.db) et non une application....

    Avez vous des solutions?
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Fodchan Voir le message
    Avez vous des solutions?
    Les fichiers de données ne sont pas gérables par un pyinstaller comme le code.... ne serait-ce que parce qu'il faut y accéder via un open qui attend un nom de fichier qui ne sera plus celui de départ (au moins sur la partie chemin).

    Normal que les pyinstaller documentent comment traiter ce cas là. Chaque outil à sa cuisine particulière pour fabriquer la solution et le documente quelque part (sinon on ne peut pas "utiliser"). Puis si la documentation est un peu indigeste, on cherche sur Internet comment d'autres s'en sont dépatouillé pour s'en inspirer.

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

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    C'est après avoir cherché sur Internet que j'ai posé ma question sur le forum. Je ne trouve pas de sujet traitant sur les bases de données, les répertoires différents et sur la transformation en fichier exécutable...

  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,

    J'utilise aussi un programme graphique (PyQt5) d'accès à une base de données sqlite3, et après conversion du programme en exe (cx_freeze ou pyinstaller), ça marche très bien! aussi je ne comprends pas le problème rencontré. Avec aussi peu d'info, on ne sait pas comment t'aider.

    Il faut donner plus de précision sur le problème rencontré. En principe, la base de données ne doit pas faire partie du même paquet que le programme exe, puisque sinon, les mises à jour seraient perdues à chaque lancement. Mais si la base de données est fixe (sans mise à jour d'une cession à l'autre), elle peut être dans le même paquet que l'exe, mais il faudrait recalculer l'adresse d'exécution (c'est dans la doc: https://pyinstaller.readthedocs.io/e...formation.html). Précise aussi les options utilisées pour la conversion par pyinstaller. Etc...
    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
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonsoir,
    Merci beaucoup pour votre réponse. C'est la première fois que je fais ça donc j'ai suivi un tuto.
    J'ai installer pyinstaller et j'ai écris la commande suivante

    pyinstaller.exe--onefile--icon=favincon.ico

    J'ai tout mis dans un même dossier (les fichiers, la base de données au format db et tous les fichiers qui étaient dans un autre répertoire...) mais après l'importation ça n'a pas fonctionné

  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
    C'est normal que ça ne marche pas: tu vas trop vite. Dans son traitement, pyinstaller ne tient compte uniquement des codes Python, et pas des données.

    Pour dire à pyinstaller de copier aussi les données, il faut ajouter l'option "--add-data" suivi des adresses source et destination de ces données (séparées par ';' sous Windows et ':' sous linux et macos).

    Par exemple, imagine un répertoire "aide" contenant des fichiers d'aide. Relativement au programme traité, cela donnera comme option supplémentaire pour pyinstaller:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    --add-data ".\aide;aide"
    Ce qui permettra à pyinstaller de copier le répertoire entier pour l'intégrer à l'exe.

    Voir toutes les options de la ligne de commande ici: https://pyinstaller.readthedocs.io/en/stable/usage.html

    Et si le programme exe ne trouve pas les données, il faudra revenir à ma remarque sur les calculs d'adresse de mon message précédent.
    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
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    merci pour votre réponse. Mais même en ajoutant les fichiers externes je tombe sur le même résultat. J'ai une application avec le bon logo au format exe. Mais quand j'appuie dessus il y a ma base de données au format db. Mais l'application se ferme après 1 secondes. J'ai essayé un autre moyen (auto-py-to-exe) et j'obtiens le même résultat...

    J'ai tapé cela sur cmd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pyinstaller --noconfirm --onefile --console --icon 
    "C:/Users/Fodchan/Desktop/interface/exe/favicon.ico" --add-data
    "C:/Users/Fodchan/Desktop/interface/exe/fiche1.html;." --add-data
    "C:/Users/Fodchan/Desktop/interface/exe/base_donnee.db;." --add-data 
    "C:/Users/Fodchan/Desktop/interface/exe/fiche3.html;." --add-data 
    "C:/Users/Fodchan/Desktop/interface/interfacepython.py"
    Mes fiches sont dans un autre dossier j'en ai mis à titre d'exemple que 2 mais il y en a plus de 200...Vous m'avez dit que mettre la base de données dans un autre fichier? Je n'ai pas trop compris, qu'entendez vous par un autre fichier?

    Merci pour votre aide

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Fodchan Voir le message
    Mes fiches sont dans un autre dossier j'en ai mis à titre d'exemple que 2 mais il y en a plus de 200...Vous m'avez dit que mettre la base de données dans un autre fichier? Je n'ai pas trop compris, qu'entendez vous par un autre fichier?
    Lorsque vous mettez l'application et les fichiers dans un même exécutable, lors du lancement, l'ensemble sera dézippé dans un répertoire temporaire et le tout pourra être détruit à la fin de l'exécution.

    Ce qui pose plusieurs problèmes.
    Le premier est que vous ne pouvez mettre la dedans que des fichiers accessibles en lecture seule car sinon les modifications seront perdues.

    Puis vous devez différencier les fichiers qui ne servent qu'à l'application et ceux sur lesquels l'utilisateur devra pouvoir avoir accès.

    Je ne sais pas de quoi vous parlez avec vos "fiches" mais si ce sont des fichiers crées par l'utilisateur, il faut bien qu'il sache où les poser et donc l'arborescence des fichiers correspondants devra être "externe" à celle temporaire créée au démarrage de l'application.

    Normalement lorsqu'on utilise un truc comme pyinstaller, on prototype les différentes fonctionnalités qu'on attend pour en anticiper les éventuels impact sur la construction de l'application i.e. fabriquer une application qui sera déployée avec pyinstaller n'est pas la même chose que de fabriquer une application puis espérer que pyinstaller va s'en débrouiller...

    Pour faire une analogie, c'est comme aller au magasin d'électroménager du coin, leur acheter le plus grand congélateur qu'ils proposent... et vous rendre compte le jour de la livraison qu'il faut pousser les murs de votre maison/appartement pour le mettre en place ou que vous n'avez pas suffisamment de puissance électrique, de prises,...

    La c'est du logiciel, les contraintes ne sont pas physiques/visibles et comment arriver à les gérer au mieux dépend de compromis à trouver avant de pouvoir livrer...

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

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

    Tu es vraiment fâché avec la doc... Ce que tu as fait sur cmd ne va pas: les options font partie de la ligne de commande qui commence à pyinstaller et qui finit à interfacepython.py (le fichier à traiter).

    Dans cmd, si tu fais "pyinstaller --help", tu auras tout ce que tu as le droit de faire avec pyinstaller. En plus de la doc complète https://pyinstaller.readthedocs.io/en/stable/usage.html

    Voilà ce que je te propose: sous Windows, tu fais un fichier .bat (c'est un fichier texte dont l'extension est ".bat"). Et tu places dedans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    pyinstaller ^
    --noconfirm ^
    --onefile ^
    --noconsole ^
    --icon "C:/Users/Fodchan/Desktop/interface/exe/favicon.ico" ^
    --add-data "C:/Users/Fodchan/Desktop/interface/exe/fiche1.html;." ^
    --add-data "C:/Users/Fodchan/Desktop/interface/exe/base_donnee.db;."  ^
    --add-data "C:/Users/Fodchan/Desktop/interface/exe/fiche3.html;." ^
    "C:/Users/Fodchan/Desktop/interface/interfacepython.py"
    Pour l'exécuter, tu fais un double-clic dans le navigateur de fichiers, ou tu demandes son exécution dans la console cmd..

    L'icone "favicon.ico" est placée dans l'option que tu avais avant (--icon) puisqu'il ne s'agit pas de la recopier mais de l'intégrer à l'exe.

    S'il s'agit d'un programme graphique, il faut utiliser l'option "--noconsole"

    Tu remarques le dernier caractère "^" en fin de ligne (avec un espace avant) qui veut dire à cmd: la ligne suivante est ajoutée à la ligne en cours. Cela permet de reconstituer la ligne complète tout en ayant une vision plus confortable des options.

    Je suppose que ta base de données est "base_donnee.db" et tu l'intègres à l'exe. Tu as compris que si tu apportes des motifs à cette base, elle seront perdues au prochain lancement de l'exe. Si tu veux conserver les modifs, il faut, en plus de supprimer la ligne --add-data, dire dans ton programme à quel endroit de ton disque il pourra accéder à cette base de donnée!

    Si tu persistes à l'intégrer dans l'exe, il faudra calculer son adresse comme indiqué dans la doc => https://pyinstaller.readthedocs.io/e...formation.html), ce qui correspond à l'adresse réelle d'exécution de l'exe. En fait, quand tu lances ton exe, celui-ci se désarchive dans un répertoire temporaire, et c'est là qu'il sera exécuté comme n'importe quel programme Python.
    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

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Merci pour vos réponses. Je pense que je vais relire la documentation, c'est pas très clair pour moi (il me manque pleins de notions je pense)...
    Je n'arrive pas à comprendre certains concepts comme comment je peux deviner dans quel répertoire l'utilisateur va enregistrer sa fiche et donc agir en conséquence dans mon application exe ...Je vais relire la documentation puis vos réponses et si j'y arrive toujours pas je reviendrai.
    Merci pour vos réponses, mais il me manque plein de choses pour bien comprendre (comme je débute je pense que je ne savais pas très bien où commencer et chercher mais maintenant je sais)

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Fodchan Voir le message
    Je n'arrive pas à comprendre certains concepts comme comment je peux deviner dans quel répertoire l'utilisateur va enregistrer sa fiche et donc agir en conséquence dans mon application exe ...
    Vous manquez de réflexion sur le cycle de vie de votre application.

    C'est pas tout de déployer "facilement", mais s'il y a des fichiers utilisateurs à gérer, comment faire une mise à jour (installer une nouvelle version, corriger des bugs) en préservant l'existant?

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

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    Merci pour votre retour. Je vous avoue que je ne comprends pas tout... C'est le flou total pour l'instant mais je vais y réfléchir progressivement

Discussions similaires

  1. [Python 3.X] PLANTAGE PYTHON.EXE INVALID BLOCK
    Par jouclar dans le forum Général Python
    Réponses: 6
    Dernier message: 27/02/2015, 13h46
  2. [Phonon] Python.exe ne se ferme plus
    Par xonop dans le forum PyQt
    Réponses: 5
    Dernier message: 02/05/2012, 11h45
  3. Réponses: 3
    Dernier message: 13/02/2011, 16h07
  4. Python.exe a rencontré un problème
    Par Chris33 dans le forum Général Python
    Réponses: 5
    Dernier message: 08/05/2010, 13h06
  5. python <-> DB SQL
    Par ths_otra dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 30/04/2008, 02h56

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