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 :

Quelle version de Python au démarrage d'un script?


Sujet :

Python

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    Je reprends en détails ce que je souhaite faire et vous remercie pour votre patience.

    Le but de cette manipulation est pour un script de pouvoir en lancer un autre et cela avec une autre version de python.

    Pour comprendre le principe j'ai donc créé 2 scripts les plus simplistes possibles.
    Le 1er, 'module1.py' doit lancer le second 'module2.py' et en lui transmettant un argument.
    Voici donc mon oeuvre:
    module1.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os
    argument_transmi='argument_transmi'
    os.system("C:\\Python26\\module2.py "+ argument_transmi)
    module2.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/python2.4
    import sys
    print "--- sys.argv dans module2 : ", sys.argv
    raw_input("---- Pour laisser fenetre dos ouverte ---")
    Concernant le module 'lanceurpython.py' crée par PauseKawa (que je remercie encore une fois), j'ai juste rajouté une ligne pour voir comment étaient transmi les arguments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from sys import argv
    from os.path import split
    from os import system, chdir
    
    filename=argv[1]
    _path, _file=split(filename)
    
    print"--- argv :",argv
    Je travaille dans Scite et je lance 'module1' par la touche F5.
    Résultat dans un fenetre Dos:
    Lancement de lanceurpython
    --- argv:['Cython26\\lanceurpython.py','Cython26\\module2.py']
    puis plus bas et concernant le module2:
    --- sys.argv dans module2 : ['module2.py']

    Bref aucune trace de 'argument_transmi' et cela malgré les différentes écritures que j'essaie.

    Je pensais que N-tox m'avait donné la solution dans son dernier message et j'ai donc essayé de modifier ma variable d'environnement:
    ;C:\WINDOWS\system32\python.bat "%1"%* mais sans succès.

  2. #22
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    module1.py (modifier pour mes chemins)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os
    argument_transmi='argument_transmi'
    os.system("python /home/patrice/Bureau/module2.py "+ argument_transmi)
    module2.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/python2.4
    import sys
    print "--- sys.argv dans module2 : ", sys.argv
    raw_input("---- Pour laisser fenetre dos ouverte ---")
    et la sortie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    patrice@Zeus:~/Bureau$ python module1.py 
    --- sys.argv dans module2 :  ['/home/patrice/Bureau/module2.py', 'argument_transmi']
    ---- Pour laisser fenetre dos ouverte ---
    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    Nous avons le même code. ça fonctionne chez toi mais pas chez moi. Je ne comprends pas...
    Je viens de verifier mon fichier 'python.bat' ; il est identique à celui que tu as posté précédemment.

  4. #24
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Citation Envoyé par Chris33 Voir le message
    Nous avons le même code. ça fonctionne chez toi mais pas chez moi. Je ne comprends pas...
    Je viens de verifier mon fichier 'python.bat' ; il est identique à celui que tu as posté précédemment.
    python.bat ? C'est module1.py et module2.py dans mon exemple.
    Je reprend du début.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  5. #25
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    Je confirme que en plus des 2 modules 'module1.py' 'et 'module2.py' tout 2 installés dans C:\python26 ainsi que 'lanceurpython.py' j'ai ton module initiale python.bat installé dans C:\WINDOWS\system32.

  6. #26
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    J'ai copier tels quels tes modules1.py et module2.py dans c:\Python26 ainsi que lanceurpython.py, modifier car il y avais une erreur et rajout de ta ligne pour argv. Puis j'ai placer python.bat dans c:\windows\system32. Nous sommes donc dans la même configuration.

    Voici ce que cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    C:\Users\PBLANG~1\Desktop>python c:\Python26\module1.py
    Lancement de lanceurpython
    --- argv : ['C:\\Python26\\lanceurpython.py', 'c:\\Python26\\module1.py']
    lanceurpython.py :
    Pas d'indication
    Lancement de module1.py avec Python2.6
    --- sys.argv dans module2 :  ['C:\\Python26\\module2.py', 'argument_transmi']
    ---- Pour laisser fenetre dos ouverte ---
     
    C:\Users\PBLANG~1\Desktop>
    Je me demande si cela ne viens pas de Scite...
    Lance directement python c:\Python26\module1.py depuis la ligne de commande pour tester svp.

    Le code de lanceurpython.py utiliser

    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
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    #!/usr/bin/env python
    #
    #
    #
    # lanceurpython.py : Selection automatique de la version de python suivant
    # l'entete du script
    #
    from sys import argv
    from os.path import split
    from os import system, chdir, linesep
    from string import lower
    from Tkinter import *
    from platform import system as SystemOS
     
    def Lance_Python():
        if SystemOS() == 'Windows':
            pythonpath={'24':'C:\\Python24\\python.exe','26':'C:\\Python26\\python.exe','31':'C:\\Python31\\python.exe'}
        elif SystemOS() == 'Linux':
            pythonpath={'24':'/usr/bin/python2.4','26':'/usr/bin/python2.6','31':'/usr/bin/python3.0'}
        elif SystemOS == 'Darwin':
            pythonpath={'24':'/usr/local/bin/python','26':'/usr/local/bin/python','31':'/usr/local/bin/python'}
            # ?
        else:
            print 'Systeme non pris en charge'
            quit()
        if _path: chdir(_path)
        print 'lanceurpython.py :'
        if not version:
            print "Pas d'indication"
            print 'Lancement de',_file,'avec Python2.6'
            if Arguments: print 'Avec pour arguments', Arguments
            system(pythonpath['26']+' '+_file + ' ' + Arguments)
        else:
            print 'Le script contient :', Pseudo_Trouve
            print 'Lancement de',_file,'avec Python', version
            if Arguments and len(Arguments) > 0: print 'Avec pour arguments', Arguments
            system(pythonpath[version]+' '+_file + ' ' + Arguments)
        quit()
     
    def Verif_Version():
        version, Pseudo_Trouve = '26', ''
        _fin=open(filename,'r')
        c=0
        version=None
        for line in _fin.readlines():
            if c==0:
                if line[0:22] == '#!/usr/bin/env python3' or line[0:18] == '#!/usr/bin/python3' or line[0:24] == '#!/usr/local/bin/python3':
                    version='31'
                    Pseudo_Trouve = "python3"
                    break
                elif line[0:24] == '#!/usr/bin/env python2.6' or line[0:20] == '#!/usr/bin/python2.6' or line[0:26] == '#!/usr/local/bin/python2.6':
                    version='26'
                    Pseudo_Trouve = "python2.6"
                    break
                elif line[0:24] == '#!/usr/bin/env python2.4' or line[0:20] == '#!/usr/bin/python2.4' or line[0:26] == '#!/usr/local/bin/python2.4':
                    version='24'
                    Pseudo_Trouve = "python2.4"
                    break
                elif line[0:21] == '#!/usr/bin/env python' or line[0:17] == '#!/usr/bin/python' or line[0:23] == '#!/usr/local/bin/python':
                    version='26'
                    Pseudo_Trouve = "python"
                    break
            elif line.startswith('#v:'):
                version=line[3:5]
                Pseudo_Trouve = '#v:' + version
                break
            if c>=5: break
            c += 1
        _fin.close()
        del c
        return version, Pseudo_Trouve
     
    def En_Graphique():
     
        def Check24_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check24_Checkbutton_IntVar.get() == 1:
                Check26_Checkbutton_IntVar.set(0)
                Check31_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Check26_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check26_Checkbutton_IntVar.get() == 1:
                Check31_Checkbutton_IntVar.set(0)
                Check24_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Check31_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check31_Checkbutton_IntVar.get() == 1:
                Check24_Checkbutton_IntVar.set(0)
                Check26_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Verif_Choix(event = None):
            if Check31_Checkbutton_IntVar.get() == 0 and Check24_Checkbutton_IntVar.get() == 0 and Check26_Checkbutton_IntVar.get() == 0:
                Check26_Checkbutton_IntVar.set(1)
     
        def scrolle(*args):
           if args[0]=='scroll':
              Options.xview_scroll(args[1],args[2])
           if args[0]=='moveto':
              Options.xview_moveto(args[1])
     
        def Valide_Lance():
            global version
            if len(Options.get()) > 0:
                global Arguments
                Arguments=' '+Options.get()
            if Check24_Checkbutton_IntVar.get() == 1:
                version='24'
            elif Check26_Checkbutton_IntVar.get() == 1:
                version = '26'
            elif Check31_Checkbutton_IntVar.get() == 1:
                version = '31'
            Lance_Python()
     
        fenask = Tk()
        fenask.geometry("%dx%d+%d+%d" % (300,420, (fenask.winfo_screenwidth()-300)/2, (fenask.winfo_screenheight()-420)/2 ) )
        fenask.resizable(False,False)
        Conteneur = Frame(fenask, bd=1, relief=SUNKEN)
        Conteneur.pack(side=TOP, fill=X, padx=5, pady=8)
        Label(Conteneur, fg='dark slate blue', text = 'Lancement du script :'+linesep+linesep+filename).pack(side=TOP, pady=10) 
        Frame(Conteneur, height=2, bd=1, relief=SUNKEN).pack(side=TOP, fill=X, padx=5, pady=8)
        Label(Conteneur, fg='dark slate blue', text = 'Version de Python pour ce script :').pack(side=TOP, pady=10)
        Check24_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 2.4', relief="flat")
        Check24_Checkbutton.pack(side=TOP, pady=5)
        Check24_Checkbutton_IntVar = IntVar()
        Check24_Checkbutton.configure(variable = Check24_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check24_Checkbutton_IntVar_traceName = Check24_Checkbutton_IntVar.trace_variable("w",  Check24_Checkbutton_IntVar_Callback)
        Check26_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 2.6', relief="flat")
        Check26_Checkbutton.pack(side=TOP, pady=5)
        Check26_Checkbutton_IntVar = IntVar()
        Check26_Checkbutton.configure(variable = Check26_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check26_Checkbutton_IntVar_traceName = Check26_Checkbutton_IntVar.trace_variable("w",  Check26_Checkbutton_IntVar_Callback)
        Check31_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 3.1', relief="flat")
        Check31_Checkbutton.pack(side=TOP, pady=5)
        Check31_Checkbutton_IntVar = IntVar()
        Check31_Checkbutton.configure(variable = Check31_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check31_Checkbutton_IntVar_traceName = Check31_Checkbutton_IntVar.trace_variable("w",  Check31_Checkbutton_IntVar_Callback)
        if version == '24': Check24_Checkbutton_IntVar.set(1)
        elif version == '26': Check26_Checkbutton_IntVar.set(1)
        elif version == '31': Check31_Checkbutton_IntVar.set(1)
        Frame(Conteneur, height=2, bd=1, relief=SUNKEN).pack(side=TOP, fill=X, padx=5, pady=8)
        Label(Conteneur, fg='dark slate blue', text = 'Arguments de la ligne de commande :').pack(side=TOP, pady=10)
        scr = Scrollbar(Conteneur, orient=HORIZONTAL, command = scrolle)
        Options = Entry(Conteneur, fg='#2a7aff', xscrollcommand = scr.set)
        Options.pack(side=TOP, fill=X, padx=10)
        scr.pack(side=TOP, fill=X, padx=10, pady=1)
        Options.insert(0, Arguments[1:])
        Frame(Conteneur, height=2, bd=1, relief=SUNKEN).pack(side=TOP, fill=X, padx=5, pady=8)
        Button(Conteneur, text='Lancement du script', fg='dark slate blue', command=Valide_Lance).pack(side=LEFT, padx=5, pady=10)
        Button(Conteneur, text='Quitter', fg='dark slate blue', command=quit).pack(side=RIGHT, padx=5, pady=10)
        fenask.mainloop()
     
    Arguments = ''
    if len(argv) < 2:
        print 'Usage:'
        print 'python <nomduscript.py> <argumentsoptionnels>'
        print 'Ou pour un usage graphique:'
        print 'python v <nomduscript.py> <argumentsoptionnels>'
        quit()
    elif len(argv) == 2:
        filename=argv[1]
    else:
        if argv[1].lower() == 'v':
            filename=argv[2]
            listeargs = 3
        else:
            filename=argv[1]
            listeargs = 2
        while listeargs < len(argv):
            Arguments = Arguments + ' ' + argv[listeargs]
            listeargs = listeargs + 1
     
    if filename[-2:].lower() != 'py' and filename[-3:].lower() != 'pyc':
        print 'Donnez un script python en argument'
        quit()
     
    _path, _file=split(filename)
    
    print"--- argv :",argv
    
    version, Pseudo_Trouve=Verif_Version()
     
    if filename == argv[1]: Lance_Python()
    else: En_Graphique()
    @+

    Edit

    module1.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os
    argument_transmi='argument_transmi'
    os.system("python C:\\Python26\\module2.py "+ argument_transmi)
    module2.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/python2.6
    #Je n'ai pas la 2.4 installée
    import sys
    print "--- sys.argv dans module2 : ", sys.argv
    raw_input("---- Pour laisser fenetre dos ouverte ---")
    sortie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    c:\>python c:\python26\module1.py
    Lancement de lanceurpython
    --- argv : ['C:\\Python26\\lanceurpython.py', 'c:\\python26\\module1.py']
    lanceurpython.py :
    Pas d'indication
    Lancement de module1.py avec Python2.6
    --- sys.argv dans module2 :  ['C:\\Python26\\module2.py', 'argument_transmi']
    ---- Pour laisser fenetre dos ouverte ---
     
    c:\>
    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
    c:\Python26>dir python*
     Le volume dans le lecteur C s'appelle System
     Le numéro de série du volume est 68FC-468C
     
     Répertoire de c:\Python26
     
    26/10/2009  08:25            26 624 python.exe
    26/10/2009  08:27            27 136 pythonw.exe
                   2 fichier(s)           53 760 octets
                   0 Rép(s)  43 575 959 552 octets libres
     
    c:\Python26>mkdir c:\tutu
     
    c:\Python26>copy module*.py c:\tutu\
    module1.py
    module2.py
            2 fichier(s) copié(s).
     
    c:\Python26>cd ..\tutu
     
    c:\tutu>python module1.py
    Lancement de lanceurpython
    --- argv : ['C:\\Python26\\lanceurpython.py', 'module1.py']
    lanceurpython.py :
    Pas d'indication
    Lancement de module1.py avec Python2.6
    Lancement de lanceurpython
    --- argv : ['C:\\Python26\\lanceurpython.py', 'C:\\Python26\\module2.py', 'argum
    ent_transmi']
    lanceurpython.py :
    Pas d'indication
    Lancement de module2.py avec Python2.6
    Avec pour arguments  argument_transmi
    --- sys.argv dans module2 :  ['module2.py', 'argument_transmi']
    ---- Pour laisser fenetre dos ouverte ---
    Merci d'utiliser le forum pour les questions techniques.

  7. #27
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Désolé je n'avais pas le temps de commenter l'edit
    Comme le dit N.tox il y a un os.chdir
    Si je me déplace dans c:\python26 module1 lance un os.system et Windows regarde en priorité dans le répertoire courant avant de parcourir le path.
    Il utilise donc le python.exe de c:\python26 et lance module2 avec.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    Ce que je ne comprends pas c'est que lorsque 'module1' est lancé, j'ai une fenêtre dos dans laquelle s'affiche:
    'Lancement de lanceur python'

    ce qui correspond bien à l'instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    echo Lancement de lanceurpython
    C:\Python26\python.exe C:\Python26\lanceurpython.py %*
    du module 'python.bat'.

    'lanceurpython' est donc lancé mais ne reçoit pas 'argument_tansmi'. Le seul argument qu'il recoit est le nom su script à démarrer.

  9. #29
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    C'est parce qu'il n'y as pas d'argument pour module1.

    Par contre il y en a un pour module2

    Regarde bien le dernier code de mon edit

    @+

    Edit : Ou si tu préfère argv[0] est le script lui même
    Merci d'utiliser le forum pour les questions techniques.

  10. #30
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    1/ Je viens de refaire la procédure que tu m'as indiqué:
    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
    Microsoft Windows XP [version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
     
    C:\Documents and Settings\Christian>cd..
     
    C:\Documents and Settings>cd..
     
    C:\>cd Python26
     
    C:\Python26>dir python*
     Le volume dans le lecteur C s'appelle HDD
     Le numéro de série du volume est 2453-2AAB
     
     Répertoire de C:\Python26
     
    02/10/2009  20:42            26 624 python.exe
    02/10/2009  19:41         2 140 160 python26.dll
    02/10/2009  20:43            27 136 pythonw.exe
                   3 fichier(s)        2 193 920 octets
                   0 Rép(s)  10 357 231 616 octets libres
     
    C:\Python26>mkdir c:\tutu
     
    C:\Python26>copy module*.py c:\tutu
    module1.py
    module1python26.py
    module2.py
    module2python26.py
            4 fichier(s) copié(s).
     
    C:\Python26>cd..\tutu
     
    C:\tutu>python module1.py
    Lancement de lanceurpython
    --- argv : ['C:\\Python26\\lanceurpython.py', 'module1.py']
    lanceurpython.py :
    Pas d'indication
    Lancement de module1.py avec Python2.6
    Lancement de lanceurpython
    --- argv : ['C:\\Python26\\lanceurpython.py', 'C:\\Python26\\module2.py', 'argum
    ent_transmi']
    lanceurpython.py :
    Le script contient : python2.6
    Lancement de module2.py avec Python 26
    Avec pour arguments  argument_transmi
    --- sys.argv dans module2 :  ['module2.py', 'argument_transmi']
    ---- Pour laisser fenetre dos ouverte ---
    2/ De cette manière, dans le dos ça fonctionne.
    Qu'en est-il de os.chdir ? Quel chemin indiquée?
    Pour python.bat le fichier est lancé et c'est bien lui qui lance lanceurpython?

    3/ Que dois-je modifier? Si tu as une idée... personnellement je suis perdu.

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    Ok, Il semblerait que j'ai fais une erreur: je n'ai pas vu que tu as modifié module1 de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system("python C:\\Python26\\module2.py "+ argument_transmi)
    et là effectivement cela fonctionne.

  12. #32
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    dans le cas d'arguments multiples ("%1"%* dans le batch), il faut également modifier le script lanceur, désolé je resort mon script, faudra adapté (la flemme)

    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
    import sys,os
     
    filename     = sys.argv[1]
    #filename correspond au chemin (nom compris) du script cible
    _path, _file = os.path.split(filename)
    #ce nom de fichier est décortiqué en deux éléments:
    #   le chemin
    #   le nom du fichier
     
    try :
        args=' '+' '.join(sys.argv[2:])
    except IndexError:
        args=''
     
    pythonpath={'24':'D:\\MyPath24\\ptyhon24.exe','26':'D:\\MyPath26\\ptyhon26.exe','30':'D:\\MyPath30\\ptyhon30.exe'}
     
     
    #DEBUT du repérage de la balise de version dans le script cible
    _fin=open(filename,'r')
    c=0
    version=None
    for line in _fin:
        if line.startswith('#v:'):
            version=line[3:5]
            break
        if c>=5: break
        c += 1
    _fin.close()
    del c
    #FIN du repérage
     
    # mise du répertoire du script cible en tant que répertoire courant
    os.chdir(_path)
     
    if not version: #aucune balise trouvée
        os.system(pythonpath['26']+' '+_file + args) #lancement du script via python26
    else:#balise trouvée
        os.system(pythonpath[version] + ' ' + _file + args) #lancement du script via le bon python

  13. #33
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour N.tox,

    Je ne comprend pas trop ton "%1"%*
    Personnelement dans le bat j'ai mis directement C:\Python26\python.exe C:\Python26\lanceurpython.py %* (voir messages précédents) puis je fais un len(argv) pour gérer le nombre d'éléments dans la liste pour finir par un while listeargs < len(argv):. Cela me semble plus propre qu'un try.

    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
    Arguments = ''
    if len(argv) < 2:
        print 'Usage:'
        print 'python <nomduscript.py> <argumentsoptionnels>'
        print 'Ou pour un usage graphique:'
        print 'python v <nomduscript.py> <argumentsoptionnels>'
        quit()
    elif len(argv) == 2:
        filename=argv[1]
    else:
        if argv[1].lower() == 'v':
            filename=argv[2]
            listeargs = 3
        else:
            filename=argv[1]
            listeargs = 2
        while listeargs < len(argv):
            Arguments = Arguments + ' ' + argv[listeargs]
            listeargs = listeargs + 1
    @+

    A noter une erreur dans le script lanceurpython précédent :
    elif SystemOS() == 'Darwin'
    De plus vous remarquerez que je ne sais pas ou s'installe python sous mac os
    Merci d'utiliser le forum pour les questions techniques.

  14. #34
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    J'ai effectué la modification pour 2 arguments et je confirme cela fonctionne.

    Juste une dernière question avant de clore le sujet.

    lorsque le modifie le module2.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/python3
    import sys
    print "--- sys.argv dans module2 : ", sys.argv
    print"--- sys.version :",sys.version
    print"--- sys.executable :",sys.executable
    print"--- sys.version_info :",sys.version_info
    raw_input("---- Pour laisser fenetre dos ouverte ---")
    Pourquoi est-ce que j'obtiens:

    --- sys.argv dans module2 : ['C:\\Python26\\module2.py', 'argument1', 'argument
    2']
    --- sys.version : 2.6.3 (r263rc1:75186, Oct 2 2009, 20:40:30) [MSC v.1500 32 bi
    t (Intel)]
    --- sys.executable : C:\Python26\python.exe
    --- sys.version_info : (2, 6, 3, 'final', 0)
    ---- Pour laisser fenetre dos ouverte ---


    et non pas 31.

    BONNE ANNEE A TOUS

  15. #35
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Parce que ce n'est pas ton script qui lance module2.py mais python.exe
    Vérifie tes chemins et ton path

    Exemple chez moi si le script n'es pas le premier dans le path :

    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
    patrice@Zeus:~/Bureau$ python module2.py 
    --- sys.argv dans module2 :  ['module2.py']
    --- sys.version : 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
    [GCC 4.3.3]
    --- sys.executable : /home/patrice/bin/python
    --- sys.version_info : (2, 6, 2, 'final', 0)
    ---- Pour laisser fenetre dos ouverte ---
    patrice@Zeus:~/Bureau$ /home/patrice/Bureau/python module2.py 
    lancement de module2.py
    ['/home/patrice/bin/python', '/usr/bin/python']
    lanceurpython.py :
    Le script contient : python3
    Lancement de module2.py avec Python 31
      File "module2.py", line 3
        print "--- sys.argv dans module2 : ", sys.argv
                                           ^
    SyntaxError: invalid syntax
    patrice@Zeus:~/Bureau$ cat /home/patrice/Bureau/python 
    #!/bin/bash
    echo 'lancement de '$*
    /usr/bin/python2.6 /home/patrice/Bureau/lanceurpython.py $*
    patrice@Zeus:~/Bureau$
    @+

    BONNE ANNEE @LL
    Merci d'utiliser le forum pour les questions techniques.

  16. #36
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Plus simple pour vérifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    patrice@Zeus:~/Bureau$ python
    Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
    [GCC 4.3.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> quit()
    patrice@Zeus:~/Bureau$ /home/patrice/bin/python
    lancement de 
    Usage:
    python <nomduscript.py> <argumentsoptionnels>
    Ou pour un usage graphique:
    python v <nomduscript.py> <argumentsoptionnels>
    patrice@Zeus:~/Bureau$
    Vive print

    @+
    Merci d'utiliser le forum pour les questions techniques.

  17. #37
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    J'ai fais mumuse avec le script ce matin donc si cela intéresse quelqu'un

    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
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    #!/usr/bin/env python
    #
    #
    #
    #
    # lanceurpython.py : Selection automatique de la version de python suivant
    # l'entete du script
    #
    # http://www.developpez.net/forums/d851585/autres-langages/python-zope/general-python/version-python-demarrage-script/
    #
    # Installation :
    #
    # Placez lanceurpython.py dans un des chemins ci dessou suivant votre systeme
    # C:\Python26\ pour Windows
    # /usr/bin/ sous Linux
    # /usr/local/bin/ sous Mac OS
    #
    # Placer le script shell/.bat dans le premier path ou lancer python
    # lanceurpython.py <undevosscripts> une premiere fois pour le creer
    # automatiquement.
    #
    # Sous Windows modifiers les associations pour lancer les scripts python avec
    # python.bat
    #
    # Utilisation :
    #
    # Lancez vos scripts avec python <undevosscripts>
    # Utilisez python v <undevosscripts> pour afficher les informations d'execution
    # Utilisez python g <undevosscripts> pour le mode graphique
    #
     
    from sys import argv, exit
    from sys import version as PyVersion
    from os.path import split, isfile
    from os import system, chdir, linesep, pathsep, environ, linesep, chmod
    from string import lower
    # Tkinter pour etre universel
    from Tkinter import *
    from platform import system as SystemOS
     
    def RemplirDico():
        # Creation du dico des versions suivant l'os
        ListeDesPath = {}
        pythonpath ={}
        if SystemOS() == 'Windows':
            ListeDesPath=={'23':'C:\\Python23\\python.exe','24':'C:\\Python24\\python.exe','25':'C:\\Python25\\python.exe','26':'C:\\Python26\\python.exe','30':'C:\\Python30\\python.exe','31':'C:\\Python31\\python.exe'}
        elif SystemOS() == 'Linux':
            ListeDesPath={'23':'/usr/bin/python2.3','24':'/usr/bin/python2.4','25':'/usr/bin/python2.5','26':'/usr/bin/python2.6','30':'/usr/bin/python3.0','31':'/usr/bin/python3.1'}
        elif SystemOS() == 'Darwin':
            ListeDesPath={'23':'/usr/local/bin/python','24':'/usr/local/bin/python','25':'/usr/local/bin/python','26':'/usr/local/bin/python','30':'/usr/local/bin/python','31':'/usr/local/bin/python'}
            # Merci de corriger pour mac os et est il possible de faire un lanceur ?
        else:
            if argv[1].lower() == 'v':
                print ('Systeme non pris en charge')
            exit(1)
     
        # Creation du dico des chemins des installations de python trouves
        for pyversion in ListeDesPath:
            if isfile(ListeDesPath[pyversion]):
                pythonpath[pyversion] = ListeDesPath[pyversion]
        del ListeDesPath
        return pythonpath
     
    def Verif_Script():
        # Verification du path
        CheminScript = environ.get("PATH").split(pathsep)[0]
        # Si le script n'est pas dans le path > creation
        if SystemOS() == 'Windows':
            if not isfile(CheminScript + "\python.bat"):
                lescript = open(CheminScript + "\python.bat",'w')
                textscript = '@echo off' + linesep + "C:\Python26\python.exe C:\Python26\lanceurpython.py %*"
                lescript.write(textscript)
                lescript.close()
        elif SystemOS() == 'Linux':
            if not isfile(CheminScript + '/python'):
                lescript = open(CheminScript + '/python','w')
                textscript = '#!/bin/bash' + linesep + '/usr/bin/python /usr/bin/lanceurpython.py $*'
                lescript.write(textscript)
                lescript.close()
                chmod(CheminScript + '/python', 0777)
        elif SystemOS() == 'Darwin':
            if not isfile(CheminScript + '/python'):
                lescript = open(CheminScript + '/python','w')
                textscript = '#!/bin/bash' + linesep + '/usr/local/bin/python /usr/local/bin/lanceurpython.py $*'
                lescript.write(textscript)
                lescript.close()
                # Merci de corriger pour mac os et est il possible de faire un lanceur ?
     
    def Lance_Python():
        # Changement de repertoire pour les imports eventuels
        if _path: chdir(_path)
     
        # Debut de l'affichage des informations
        if argv[1].lower() == 'v':
            print ('lanceurpython.py :')
     
        # Lancement suivant la version avec verification de celle ci
        if not version:
            if argv[1].lower() == 'v':
                print ("Pas d'indication")
                print ('Lancement de ' + _file + ' avec Python' + pyversion)
                if Arguments: print ('Avec pour arguments : ' + Arguments)
            system(pythonpath[pyversion]+' '+_file + ' ' + Arguments)
        elif version not in pythonpath.keys():
            if argv[1].lower() == 'v':
                print ('Version de python non presente')
                print ('Lancement de ' + _file + ' avec Python ' + pyversion)
                if Arguments: print ('Avec pour arguments : ' + Arguments)
            system(pythonpath[pyversion]+' '+_file + ' ' + Arguments)
        else:
            if argv[1].lower() == 'v':
                print ('Le script contient : ' + Pseudo_Trouve)
                print ('Lancement de ' + _file + ' avec Python' + version)
                if Arguments and len(Arguments) > 0: print ('Avec pour arguments : ' + Arguments)
            system(pythonpath[version]+' '+_file + ' ' + Arguments)
        exit(0)
     
    def Verif_Version():
        # Definition de la valeur par defaut
        pyversion = PyVersion[0]+PyVersion[2]
        # Lecture du script pour recherche d'information
        _fin=open(filename,'r')
        c=0
        version=None
        Pseudo_Trouve = ''
        for line in _fin.readlines():
            if c==0:
                if line[0:22] == '#!/usr/bin/env python3' or line[0:18] == '#!/usr/bin/python3' or line[0:24] == '#!/usr/local/bin/python3':
                    version='30'
                    Pseudo_Trouve = "python3"
                    break
                elif line[0:24] == '#!/usr/bin/env python3.1' or line[0:20] == '#!/usr/bin/python3.1' or line[0:26] == '#!/usr/local/bin/python3.1':
                    version='31'
                    Pseudo_Trouve = "python3.1"
                    break
                elif line[0:24] == '#!/usr/bin/env python2.6' or line[0:20] == '#!/usr/bin/python2.6' or line[0:26] == '#!/usr/local/bin/python2.6':
                    version='26'
                    Pseudo_Trouve = "python2.6"
                    break
                elif line[0:24] == '#!/usr/bin/env python2.5' or line[0:20] == '#!/usr/bin/python2.5' or line[0:26] == '#!/usr/local/bin/python2.5':
                    version='25'
                    Pseudo_Trouve = "python2.5"
                    break
                elif line[0:24] == '#!/usr/bin/env python2.4' or line[0:20] == '#!/usr/bin/python2.4' or line[0:26] == '#!/usr/local/bin/python2.4':
                    version='24'
                    Pseudo_Trouve = "python2.4"
                    break
                elif line[0:24] == '#!/usr/bin/env python2.3' or line[0:20] == '#!/usr/bin/python2.3' or line[0:26] == '#!/usr/local/bin/python2.3':
                    version='23'
                    Pseudo_Trouve = "python2.3"
                    break
                elif line[0:21] == '#!/usr/bin/env python' or line[0:17] == '#!/usr/bin/python' or line[0:23] == '#!/usr/local/bin/python':
                    version='26'
                    Pseudo_Trouve = "python"
                    break
            elif line.startswith('#v:'):
                version=line[3:5]
                Pseudo_Trouve = '#v:' + version
                break
            if c>=5: break
            c += 1
        _fin.close()
        del c
        # return version dans le script, pseudo commentaire trouve, version de python par defaut
        return version, Pseudo_Trouve, pyversion
     
    def En_Graphique(): # Lancement en mode graphique (argument g)
     
        # Trace des variables pour les Checkbutton
        def Check23_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check23_Checkbutton_IntVar.get() == 1:
                Check24_Checkbutton_IntVar.set(0)
                Check25_Checkbutton_IntVar.set(0)
                Check26_Checkbutton_IntVar.set(0)
                Check30_Checkbutton_IntVar.set(0)
                Check31_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Check24_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check24_Checkbutton_IntVar.get() == 1:
                Check23_Checkbutton_IntVar.set(0)
                Check25_Checkbutton_IntVar.set(0)
                Check26_Checkbutton_IntVar.set(0)
                Check30_Checkbutton_IntVar.set(0)
                Check31_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Check25_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check25_Checkbutton_IntVar.get() == 1:
                Check23_Checkbutton_IntVar.set(0)
                Check24_Checkbutton_IntVar.set(0)
                Check26_Checkbutton_IntVar.set(0)
                Check30_Checkbutton_IntVar.set(0)
                Check31_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Check26_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check26_Checkbutton_IntVar.get() == 1:
                Check23_Checkbutton_IntVar.set(0)
                Check24_Checkbutton_IntVar.set(0)
                Check25_Checkbutton_IntVar.set(0)
                Check30_Checkbutton_IntVar.set(0)
                Check31_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Check30_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check30_Checkbutton_IntVar.get() == 1:
                Check23_Checkbutton_IntVar.set(0)
                Check24_Checkbutton_IntVar.set(0)
                Check25_Checkbutton_IntVar.set(0)
                Check26_Checkbutton_IntVar.set(0)
                Check31_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        def Check31_Checkbutton_IntVar_Callback(varName, index, mode):
            if Check31_Checkbutton_IntVar.get() == 1:
                Check23_Checkbutton_IntVar.set(0)
                Check24_Checkbutton_IntVar.set(0)
                Check25_Checkbutton_IntVar.set(0)
                Check26_Checkbutton_IntVar.set(0)
                Check30_Checkbutton_IntVar.set(0)
            Verif_Choix()
     
        # Version 2.6 par defaut. A faire : test de la version par defaut et revoir le if.
        def Verif_Choix(event = None):
            if Check31_Checkbutton_IntVar.get() == 0 and Check24_Checkbutton_IntVar.get() == 0 and Check26_Checkbutton_IntVar.get() == 0 and Check25_Checkbutton_IntVar.get() == 0 and Check23_Checkbutton_IntVar.get() == 0 and Check30_Checkbutton_IntVar.get() == 0:
                Check26_Checkbutton_IntVar.set(1)
     
        # Scroll de l'Entry des arguments
        def scrolle(*args):
           if args[0]=='scroll':
              Options.xview_scroll(args[1],args[2])
           if args[0]=='moveto':
              Options.xview_moveto(args[1])
     
        def Valide_Lance():
            global version
            if len(Options.get()) > 0:
                global Arguments
                Arguments=' '+Options.get()
            if Check23_Checkbutton_IntVar.get() == 1:
                version='23'
            elif Check24_Checkbutton_IntVar.get() == 1:
                version='24'
            elif Check25_Checkbutton_IntVar.get() == 1:
                version='25'
            elif Check26_Checkbutton_IntVar.get() == 1:
                version='26'
            if Check30_Checkbutton_IntVar.get() == 1:
                version='30'
            elif Check31_Checkbutton_IntVar.get() == 1:
                version='31'
            Lance_Python()
     
        fenask = Tk()
        # Si pas d'overrideredirect > fenask.title("Lanceur Python")
        # Pour faire 'sympas'
        fenask.overrideredirect(1)
        Conteneur = Frame(fenask, bd=1, relief=SUNKEN)
        Conteneur.pack(side=TOP, fill=X, padx=5, pady=8)
        # Informations sur le script
        Label(Conteneur, fg='dark slate blue', text = 'Lancement du script :'+linesep+linesep+filename).pack(side=TOP, pady=10)
        # Separateur
        Frame(Conteneur, height=2, bd=1, relief=SUNKEN).pack(side=TOP, fill=X, padx=5, pady=8)
        # Selection de la version
        Label(Conteneur, fg='dark slate blue', text = 'Version de Python pour ce script :').pack(side=TOP, pady=10)
        Check23_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 2.3', relief="flat")
        Check23_Checkbutton_IntVar = IntVar()
        Check23_Checkbutton.configure(variable = Check23_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check23_Checkbutton_IntVar_traceName = Check23_Checkbutton_IntVar.trace_variable("w",  Check23_Checkbutton_IntVar_Callback)
        Check24_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 2.4', relief="flat")
        Check24_Checkbutton_IntVar = IntVar()
        Check24_Checkbutton.configure(variable = Check24_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check24_Checkbutton_IntVar_traceName = Check24_Checkbutton_IntVar.trace_variable("w",  Check24_Checkbutton_IntVar_Callback)
        Check25_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 2.5', relief="flat")
        Check25_Checkbutton_IntVar = IntVar()
        Check25_Checkbutton.configure(variable = Check25_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check25_Checkbutton_IntVar_traceName = Check25_Checkbutton_IntVar.trace_variable("w",  Check25_Checkbutton_IntVar_Callback)
        Check26_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 2.6', relief="flat")
        Check26_Checkbutton_IntVar = IntVar()
        Check26_Checkbutton.configure(variable = Check26_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check26_Checkbutton_IntVar_traceName = Check26_Checkbutton_IntVar.trace_variable("w",  Check26_Checkbutton_IntVar_Callback)
        Check30_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 3.0', relief="flat")
        Check30_Checkbutton_IntVar = IntVar()
        Check30_Checkbutton.configure(variable = Check30_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check30_Checkbutton_IntVar_traceName = Check30_Checkbutton_IntVar.trace_variable("w",  Check30_Checkbutton_IntVar_Callback)
        Check31_Checkbutton = Checkbutton(Conteneur, fg='dark slate blue', activeforeground='#2a7aff', text=' Python 3.1', relief="flat")
        Check31_Checkbutton_IntVar = IntVar()
        Check31_Checkbutton.configure(variable = Check31_Checkbutton_IntVar, onvalue=1, offvalue=0)
        Check31_Checkbutton_IntVar_traceName = Check31_Checkbutton_IntVar.trace_variable("w",  Check31_Checkbutton_IntVar_Callback)
        # Pack suivant la presence dans le dico. Pour le redimensionnement de la fenetre fenask.
        # Par contre le if x in y.keys() n'est pas une bonne chose.
        # A voir de faire plus 'propre'
        if '23' in pythonpath.keys(): Check23_Checkbutton.pack(side=TOP, pady=5)
        if '24' in pythonpath.keys(): Check24_Checkbutton.pack(side=TOP, pady=5)
        if '25' in pythonpath.keys(): Check25_Checkbutton.pack(side=TOP, pady=5)
        if '26' in pythonpath.keys(): Check26_Checkbutton.pack(side=TOP, pady=5)
        if '30' in pythonpath.keys(): Check30_Checkbutton.pack(side=TOP, pady=5)
        if '31' in pythonpath.keys(): Check31_Checkbutton.pack(side=TOP, pady=5)
        # Version a utiliser
        if version:
            checkversion = version
        else:
            checkversion = pyversion
        # Check de la version
        if checkversion == '23': Check23_Checkbutton_IntVar.set(1)
        elif checkversion == '24': Check24_Checkbutton_IntVar.set(1)
        elif checkversion == '25': Check25_Checkbutton_IntVar.set(1)
        elif checkversion == '26': Check26_Checkbutton_IntVar.set(1)
        elif checkversion == '30': Check30_Checkbutton_IntVar.set(1)
        elif checkversion == '30': Check31_Checkbutton_IntVar.set(1)
        # Pour donner la possibilite de mettre des arguments en graphique si lancement par association
        Frame(Conteneur, height=2, bd=1, relief=SUNKEN).pack(side=TOP, fill=X, padx=5, pady=8)
        Label(Conteneur, fg='dark slate blue', text = 'Arguments de la ligne de commande :').pack(side=TOP, pady=10)
        scr = Scrollbar(Conteneur, orient=HORIZONTAL, command = scrolle)
        Options = Entry(Conteneur, fg='#2a7aff', xscrollcommand = scr.set)
        Options.pack(side=TOP, fill=X, padx=10)
        scr.pack(side=TOP, fill=X, padx=10, pady=1)
        # Au cas ou...
        Options.insert(0, Arguments[1:])
        # Separateur
        Frame(Conteneur, height=2, bd=1, relief=SUNKEN).pack(side=TOP, fill=X, padx=5, pady=8)
        # Bouttons
        Button(Conteneur, text='Lancement du script', fg='dark slate blue', command=Valide_Lance).pack(side=LEFT, padx=5, pady=10)
        Button(Conteneur, text='Quitter', fg='dark slate blue', command=quit).pack(side=RIGHT, padx=5, pady=10)
        # Deplacement au centre suivant la taille de la fenetre fenask
        # Voir pour un withdraw()/deiconify() afin d'eviter un premier affichage
        fenask.update()
        fenask.geometry("%dx%d+%d+%d" % (fenask.winfo_width(), fenask.winfo_height(), (fenask.winfo_screenwidth()-fenask.winfo_width())/2, (fenask.winfo_screenheight()-fenask.winfo_height())/2 ) )
        fenask.resizable(False,False)
        # Et le mainloop
        fenask.mainloop()
     
    Arguments = ''
     
    # Verif du path
    pythonpath = RemplirDico()
     
    # Verification des arguments
    if len(argv) < 2:
        print ('Usage:')
        print ('python <nomduscript.py> <argumentsoptionnels>')
        print ('Pour un usage graphique:')
        print ('python g <nomduscript.py> <argumentsoptionnels>')
        print ('Pour un usage verbeu:')
        print ('python v <nomduscript.py> <argumentsoptionnels>')
        exit(1)
    elif len(argv) == 2:
        filename=argv[1]
    else:
        if argv[1].lower() == 'g' or argv[1].lower() == 'v':
            filename=argv[2]
            listeargs = 3
        else:
            filename=argv[1]
            listeargs = 2
        while listeargs < len(argv):
            Arguments = Arguments + ' ' + argv[listeargs]
            listeargs = listeargs + 1
     
    # Verification de la presence d'un script python dans argv
    if filename[-2:].lower() != 'py' and filename[-3:].lower() != 'pyc':
        if argv[1].lower() == 'v':
            print ('Donnez un script python en argument')
        exit(1)
     
    # Chemin du script
    _path, _file=split(filename)
     
    # Verification de la version a utiliser
    version, Pseudo_Trouve, pyversion=Verif_Version()
     
    # Verification de la presence du script lanceur
    Verif_Script()
     
    # Graphique ou pas
    if filename == argv[1] or argv[1].lower() == 'v': Lance_Python()
    else: En_Graphique()
    Merci d'utiliser le forum pour les questions techniques.

  18. #38
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 262
    Points : 93
    Points
    93
    Par défaut
    J'ai revu mes scripts. Tout fonctionne désormais parfaitement. J'ai bien la bonne version au démarrage de chaque script.

    Je remercie donc PauseKawa et N.tox pour leur aide et leur patience (elle était nécessaire)



+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Quelles versions d'Access utilisez-vous en 2009 ?
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 16
    Dernier message: 19/05/2016, 17h17
  2. quelle version de SciPy pour Python 2.6.2?
    Par billyrose dans le forum Déploiement/Installation
    Réponses: 3
    Dernier message: 21/05/2009, 20h35
  3. [Install] Quelle version d'Eclipse choisir
    Par yassine_23 dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 13/05/2004, 15h57
  4. Quelle version de Postgresql pour mandrake 9.0 ?
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 09/03/2004, 10h45
  5. [JBuilder][Web Services] à partir de quelle version?
    Par sicard_51 dans le forum JBuilder
    Réponses: 2
    Dernier message: 25/08/2003, 12h54

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