Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / lanceur de sripts Python (suite)

lanceur de sripts Python (suite)

Remonter à Forum général Python
  • lanceur de sripts Python (suite)

    Envoyé par jeanbleo le 27 Novembre 2010 à 16:44
    def Comparer(WIN, LNX, PY2, PY3, LAN, Retour):
    NOK = 0
    if Retour != "":
    if py3 == 1:
    reponse = messagebox.askyesno(message="Le fichier n'a pas de marqueurs qui determinent son environnement\nExistence du risque d'erreurs",\
    icon='question', title=Retour, detail="Voulez-vous tout de meme lancer le fichier ?" )
    if reponse == False: NOK = 1
    if reponse == True: NOK = 0
    elif py2 == 1:
    reponse = tkMessageBox.askyesno(message="Le fichier n'a pas de marqueurs qui determinent son environnement\nExistence du risque d'erreurs\n\nVoulez-vous tout de meme lancer le fichier ?"\
    ,icon='question', title=Retour)
    if reponse == False: NOK = 1
    if reponse == True: NOK = 0
    else:
    if WIN != windows and WIN == 0 and LNX == 1:
    NOK = 1
    if py3 == 1:
    messagebox.showwarning(message="Le fichier n'est pas prevu pour la plateforme Windows\nL'application ne fonctionnera pas",\
    icon='warning', title="PLATEFORME INCOMPATIBLE" )
    elif py2 == 1:
    tkMessageBox.showwarning(message="Le fichier n'est pas prevu pour la plateforme Windows\nL'application ne fonctionnera pas"\
    ,icon='warning', title="PLATEFORME INCOMPATIBLE" )
    if LNX != linux and LNX == 0 and WIN == 1:
    NOK = 1
    if py3 == 1:
    messagebox.showwarning(message="Le fichier n'est pas prevu pour la plateforme Linux\nL'application ne fonctionnera pas",\
    icon='warning', title="PLATEFORME INCOMPATIBLE" )
    elif py2 == 1:
    tkMessageBox.showwarning(message="Le fichier n'est pas prevu pour la plateforme Linux\nL'application ne fonctionnera pas"\
    ,icon='warning', title="PLATEFORME INCOMPATIBLE" )
    if PY2 != py2 and PY3 == 0 and PY2 == 1:
    if py3 == 1:
    reponse = messagebox.askyesno(message="Le fichier n'est pas prevu pour la version 3 de Python\nL'application risque de ne pas fonctionner",\
    icon='warning', title="VERSION PYTHON " + str(platform.python_version()) + " INCOMPATIBLE" , detail="Voulez-vous tout de meme lancer le fichier ?" )
    if reponse == False: NOK = 1
    if reponse == True: NOK = 0
    elif py2 == 1:
    reponse = tkMessageBox.askyesno(message="Le fichier n'est pas prevu pour la version 3 de Python\nL'application risque de ne pas fonctionner\n\nVoulez-vous tout de meme lancer le fichier ?"\
    ,icon='warning', title="VERSION PYTHON " + str(platform.python_version()) + " INCOMPATIBLE" )
    if reponse == False: NOK = 1
    if reponse == True: NOK = 0
    if PY3 != py3 and PY3 == 1 and PY2 == 0:
    if py3 == 1:
    reponse = messagebox.askyesno(message="Le fichier n'est prevu que pour la version 3 de Python\nL'application risque de ne pas fonctionner",\
    icon='warning', title="VERSION PYTHON " + str(platform.python_version()) + " INCOMPATIBLE", detail="Voulez-vous tout de meme lancer le fichier ?" )
    if reponse == False: NOK = 1
    if reponse == True: NOK = 0
    elif py2 == 1:
    reponse = tkMessageBox.askyesno(message="Le fichier n'est prevu que pour la version 3 de Python\nL'application risque de ne pas fonctionner\n\nVoulez-vous tout de meme lancer le fichier ?"\
    ,icon='warning', title="VERSION PYTHON " + str(platform.python_version()) + " INCOMPATIBLE" )
    if reponse == False: NOK = 1
    if reponse == True: NOK = 0
    if LAN != reseau and LAN == 1:
    NOK = 1
    if py3 == 1:
    messagebox.showwarning(message="Le fichier necessite une connexion reseau\nL'application ne fonctionnera pas",\
    icon='warning', title="NECESSITE CONNEXION RESEAU" )
    elif py2 == 1:
    tkMessageBox.showwarning(message="Le fichier necessite une connexion reseau\nL'application ne fonctionnera pas"\
    ,icon='warning', title="NECESSITE CONNEXION RESEAU" )
    if NOK == 0:
    Lancer()

    def Lancer():
    fichierext = basename(NomFichier)
    extension = splitext(basename(NomFichier))[1]
    fichier = NomFichier[NomFichier.rfind('/')+1:NomFichier.rfind('.')]
    chemin = NomFichier[:NomFichier.rfind('/')]
    # Verification si fichier python
    if extension.lower() != '.py':
    if py3 == 1:
    messagebox.showwarning(message="Le fichier " + fichier + " n'est pas un script Python\nAvec l'extension " + extension + " cela ne fonctionnera pas",\
    icon='error', title="CHOISIR UN FICHIER .PY" )
    elif py2 == 1:
    tkMessageBox.showwarning(message="Le fichier " + fichier + " n'est pas un script Python\nAvec l'extension " + extension + " cela ne fonctionnera pas"\
    ,icon='error', title="CHOISIR UN FICHIER .PY" )
    return
    # Recherche de l'emplacement du moteur Python (au meme endroit ou se trouve le rep DLLs - surtout pour version portable)
    listechemins = sys.path
    for article in listechemins:
    occurrence = article.count('DLLs')
    if occurrence == 1:
    lanceur = article.strip('DLLs')
    # Ajout du nom de l'executable en fonction plateforme et version
    print("Version Python trouvee : " + pyversion)
    if windows == 1:
    lanceur = lanceur + "pythonw.exe "
    print("Moteur trouve : " + lanceur)
    if linux == 1:
    if py2 == 1:
    lanceur = "python "
    print("Moteur trouve : " + lanceur)
    if py3 == 1:
    lanceur = "python3 "
    print("Moteur trouve : " + lanceur)
    print("Lanceur : " + lanceur)
    # Lancement du fichier
    commande = lanceur + NomFichier
    print("Je vais lancer la commande : " + commande)
    Popen([commande], shell=True)

    # Taille de la fenetre Tkinter
    w = 500
    h = 300
    # Taille de la taille de l'ecran hote
    ws = fenetre.winfo_screenwidth()
    hs = fenetre.winfo_screenheight()
    # Position relative du centrage en fonction des deux elements ci-dessus
    x = (ws/2) - (w/2)
    y = (hs/2) - (h/2)
    # Dimensionnement et placement de la fenetre
    fenetre.geometry('%dx%d+%d+%d' % (w, h, x, y))
    # Icone de la fenetre - pas toujours OK - sous Ubuntu 10.10 NOK - sous Ubuntu 8.04 OK - Win OK
    if str(system()) == "Linux":
    fenetre.iconbitmap('@py.xbm')
    else:
    fenetre.iconbitmap('py.ico')
    # Couleurs = PLV - pour le fun (Plein La Vue)
    fenetre.title("LANCEUR UNIVERSEL" )
    Label(fenetre, font =("Helvetica", "10", "bold" ), fg='darkblue', text = "Systeme : " + str(system())).pack(side=TOP, pady=5)
    Label(fenetre, font =("Helvetica", "10", "bold" ), fg='darkgreen', text = "Version Plateforme : " + str(platform.platform())).pack(side=TOP, pady=5)
    if py2 == 1:
    texte = 'python inferieur a V3 - version : ' + str(platform.python_version())
    else:
    texte = 'python superieur a V3 - version : ' + str(platform.python_version())
    Label(fenetre, font =("Helvetica", "10", "bold" ), fg='darkred', text = texte).pack(side=TOP, pady=5)
    Label(fenetre, font =("Helvetica", "10", "bold" ), fg='purple', text = "Nom Ordinateur : " + platform.node()).pack(side=TOP, pady=5)
    Label(fenetre,font =("Helvetica", "10", "bold" ), fg='red', text = "Nom Utilisateur : " + str(getpass.getuser())).pack(side=TOP, pady=5)
    IPTrouve = TrouveIP()
    Label(fenetre, font =("Helvetica", "10", "bold" ), text = "Adresse IP : " + IPTrouve).pack(side=TOP, pady=5)
    # Selection du fichier Python a lancer
    Button(fenetre, text = "Fichier a Lancer", command = Fichier).pack(side=TOP, pady=5)
    Button(fenetre, text = "Quitter", command = Quitter).pack(side=TOP, pady=5)
    # Affichage du fichier Python et du chemin a lancer - Pas de pack en meme temp que la construction
    resultat = Label(fenetre, text = "Fichier selectionne : " + NomFichier)
    resultat.pack(side=TOP, pady=5)

    # Test user info

    fenetre.mainloop()
    ------------------------
    j'ai remplacé les ") par des " ) pour éviter les smileys.
    • Re: lanceur de sripts Python (suite)

      Envoyé par vince le 9 Janvier 2011 à 00:18
      Bonjour,

      Ce script a l'air très intéressant mais j'ai du mal à voir où ajouter les tabulations. Pourrais-tu éditer le fichier pour ajouter des commentaires de fin de fonction, fin de if, fin de else, etc. ?

      Ce serait encore plus sympa.

      vince
    • Re: lanceur de sripts Python (suite)

      Envoyé par jeanbleo le 13 Janvier 2011 à 10:33
      Bonjour vince,
      Le script en question a été contraint d'être coupé en deux.
      pour éviter les smileys, j'ai passé les ") en " ).
      Quand à l'indentation, le copié - collé n'a pas reporté ses tabulations.
      J'ai amélioré le script en y ajoutant un lecteur de docstrings (avec une difficulté d'affichage entre linux et windows sans toucher aux fonts système).
      Cela permet à l'utilisateur de savoir à quoi sert le script qu'il lance.
      Ce serveur n'accepte pas de pièce jointe (sinon j'aurais joint le fichier py)
      Si toutefois, vous avez un endroit où je pourrais déposer le script, je l'y déposerai dans sa nouvelle version.
      Le script n'est encore pas trop 'pythonique' mais fonctionnel sur toutes les plateformes (mac pas encore essayé) et versions de python.

      jeanbleo
Rendu par Ploneboard