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écutable appelant un .py


Sujet :

Python

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut Exécutable appelant un .py
    Bonjour,

    Ayant mangé pas mal de cx_freeze, je me suis dit qu'on pourrait faire plus simple pour qq1 utilisant beaucoup de programmes rédigés en Python si on pouvait appeler un fichier .py avec un exécutable (.exe - je suis sous windows - ). Il est évidemment possible de l'appeler avec un simple raccourcis, on peut même changer l'icone ou alors avec un fichier de commandes .bat. Mais je me demandais s'il était possible de créer un exécutable afin qu'il puisse bénéficier de ses avantages, comme raccourcis dans le menu démarrer, possibilité de mettre "ouvrir avec" et donc d'avoir un fichier en paramètre.
    Donc les 2 questions sont :
    Est-ce possible de créer cette sorte de "raccourci" ?
    Si oui, comment intercepter le fichier passé en paramètre avec "ouvrir avec" ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Salut,
    Sous Windows, les seuls exécutables (hors éditeurs) qui sachent faire qqc d'un .py ( .pyw) seront python.exe (et pythonw.exe).

    L'association entre .py|.pyw et ces exécutables est, en principe, faite lors de l'installation de Python. Sinon, la documentation explique comment la "construire" a la main.

    Il est aussi possible d'utiliser le Python launcher qui vient avec 3.3: il permet aussi de lancer des scripts avec des versions antérieures.

    En supposant que vous connaissiez déjà ces fonctionnalités, que cherchez vous a faire exactement?

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

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    Je me suis sans doute mal exprimé. Basons nous sur une machine qui possède python, précisons que je parlerai ici de windows car c'est le seul système d'exploitation que je connaisse suffisamment et qui peut faire quelque chose des .exe.
    Le but est de créer un exécutable qui, une fois lancé, ouvre le .py(w) (qui sera mis dans un dossier portant le nom du programme, dans program files de préférence, avec l’exécutable en question duquel on créera un raccourci) via Python.
    Cet exécutable devra et pourra posséder les avantages d’un exécutable, soit une icône, un raccourci dans démarrer, l’option ouvrir avec etc… Il pourra également capturer un éventuel fichier passé en paramètre lorsque l’on fera ouvrir avec puis notre programme (ou en passant par la console de commande CMD, je ne m’avancerai pas sur le sujet) et le passer à un programme qui va s’ouvrir.
    Ceci est probablement faisable dans un autre langage de programmation compilé, qui pourra intercepter et passer le fichier donné en paramètre au programme ainsi qu’ouvrir Python (qui prendra en paramètre le fichier .py). Le problème est que l’exécutable sera en plusieurs fichiers, qui prendront de la place et ne seront pas super commodes. C’est pourquoi je me demandais s’il était possible de faire quelque chose de ce genre.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Citation Envoyé par stalacta Voir le message
    Le but est de créer un exécutable qui, une fois lancé, ouvre le .py(w) (qui sera mis dans un dossier portant le nom du programme, dans program files de préférence, avec l’exécutable en question duquel on créera un raccourci) via Python.
    La question est de définir ce que ferait cet exécutable "en plus" de python.exe ou de py.exe (le launcher Windows).
    Et s'il ne fait rien de "plus" pourquoi le "créer"?

    Citation Envoyé par stalacta Voir le message
    Cet exécutable devra et pourra posséder les avantages d’un exécutable, soit une icône, un raccourci dans démarrer, l’option ouvrir avec etc…
    Ce ne sont pas des propriétés de l’exécutable mais des fonctionnalités de l'OS: Regardez comment ca se passe sous votre OS favori: vous créez un objet dans lequel il y a la commande a passer avec les paramétrés voulus, une icône associée,....

    Même ordre de questions: pourquoi ré-inventer ce qui existe déjà?

    Note: Passer du temps a coder des fonctionnalités qui existent déjà peut être utile pour apprendre. Dans les autres cas: "life is too short".

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

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    Eh bien, le but serait de créer un exécutable qui fasse juste raccourci (comme un bête raccourci qui va ouvrir tel fichier avec tel programme, en l'occurence notre code source et Python). Le truc, c'est qu'il est impossible de faire "ouvrir avec" avec un autre fichier qu'un exécutable. C'est à peu près le seul intéret de la démarche.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Citation Envoyé par stalacta Voir le message
    Le truc, c'est qu'il est impossible de faire "ouvrir avec" avec un autre fichier qu'un exécutable. C'est à peu près le seul intéret de la démarche.
    Certes!
    Je vous ai propose d'utiliser les exécutables: python.exe, pythonw.exe, py.exe,... OU d'expliquer ce qu'il n'est pas possible de faire avec...
    Bon courage,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    En fait, quand on ouvre un fichier .py(w), cela fait appel à python(w).exe. Mais ce que je veux faire, c'est créer un exécutable qui dit "ouvrir tel fichier avec tel programme". Et accessoirement quand on fait "ouvrir avec" sur un fichier puis qu'on fait "parcourir" et qu'on sélectionne l'exécutable, ça puisse le passer d'une manière ou d'une autre en paramètre à notre script.

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut
    Ça reste simple :
    Tu compiles ton script principal à l'aide de cx_freeze (celui qui lancera les autres scripts)
    À partir de là tu as plusieurs possibilités :
    Soit tu importe tes fichiers .py et tu appelles leurs fonctions à partir du programme principal.
    Imaginons que ton programme principal exécute un programme qui affiche 1 et un deuxième qui affiche 2 :

    Programme principal (main.exe):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import aff1
    import aff2
    aff1.affiche1()
    aff2.affiche2()
    Programme qui affiche 1 (aff1.py):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def affiche1():
        print("1")
    Programme qui affiche 2 (aff2.py):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def affiche2():
        print("2")
    Sinon, sous condition que Python soit présent dans le PATH :
    Programme principal (main.exe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os;
    os.system("aff1.py");
    os.system("aff2.py");
    Programme qui affiche 1 (aff1.py):
    Programme qui affiche 2 (aff2.py):

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut
    (Et à ce propos : Je ne vois pas tu veux parler avec "Ouvrir avec..", il n'y a bien guerre que Windows pour ouvrir tes .exe non ?)
    Enfin en principe, après tu as les injecteurs, les reshackers et autres joyeusetés..

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    Merci, mais cela ne correspond pas à ce que je veux (j'y avais pensé mais ça complique sans rien apporter), ce que je veux c'est ne pas avoir à passer par cx_freeze ou autre parce que ça crée des exécutables super lourds. Mais dans l'idée, ça donnerai idéalement dans un langage compilé (je fais n'importe quoi pour montré l'idée):
    programme principal (celui qui va être transformé en .exe), je le code dans un pseudo Python mais il s'agirait d'un autre langage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    from os import system
    fichier_passe_en_parametre=capturer_les_variables_passees_a_l_executable()
    fichier=open('fichier de sauvegarde paramètres.txt','wb')#il va sauvegarder le fichier passé en paramètre
    fichier.write(fichier_passe_en_parametre[0])#c'est un tuple qui est renvoyé
    fichier.close()
    system('code source.py')
    Je vais expliquer la seconde ligne, on aurait une fonction qui capture le fichier éventuellement passé en paramètre lors de l'exécution du fichier (quand on ouvre un fichier, on peut faire clic droit, ouvrir avec et on sélectionne cet exécutable, c'est l'équivalent en console de commande windows de : "Programme principal.exe" "fichier.ext" - en disant qu'on est déjà dans le répertoire - , j'ai inventé l'extension ext, le programme va lire ce fichier). La fonction renverrai dans un tuple ("fichier.ext"), en effet, il peut y avoir plusieurs paramètres même s'il n'y en a qu'un dans notre exemple.
    Puisque je vois que j'ai du mal à me faire comprendre, prenons l'exemple de blender (logiciel de 3D) qui est rédigé en Python, il me semble. Il génère des fichiers .blend, qui s'ouvrent avec blender.exe. Lorsqu'on double-clic sur l'un des fichiers .blend, il ouvre automatiquement blender (je n'en demande pas autant, juste qu'on puisse le faire avec "ouvrir avec", ce qui revient à faire "ouvrir avec"->blender) et blender ouvre automatiquement le projet sans que l'on ai à ouvrir blender puis mettre ouvrir tel fichier. Ce que je demande c'est pouvoir en faire autant avec un programme.

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/09/2010, 12h01
  2. Réponses: 18
    Dernier message: 31/05/2008, 19h38
  3. On error goto Err : goto non exécutée au 2ème appel
    Par charliejo dans le forum Access
    Réponses: 1
    Dernier message: 11/04/2006, 15h00
  4. Réponses: 7
    Dernier message: 12/03/2006, 21h18
  5. Question d'exécution: Appel destructeur.
    Par SpongeBob dans le forum C++
    Réponses: 2
    Dernier message: 10/01/2006, 20h48

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