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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut Quelle version de Python au démarrage d'un script?
    Bonjour,

    Je vous expose ici mon problème et davance merci pour les explications que vous pourrez m'apporter.

    J'utilise plusieurs versions de Python (2.4; 2.6 et 3.1).
    Je peux sans problème copier mes scripts créés avec la version 2.4 et les coller ou je veux, cela fonctionne sans problème. Malheureusement ceci ne fonctionne pas avec les autres versions. Tant que j'y accède par l'intermédiaire de l'IDLE de la version concernée cela fonctionne mais impossible ensuite de déplacer les scripts.

    Petites précisions:
    -Je travaille sur Windows.
    -Dans ma variable environnement, pour 'path', j'ai ajouté :;C:\Python26\;C:\Python31\

    Je suppose qu'après avoir déplacé le script celui-çi veuille démarrer en version 2.4 et je ne vois pas comment résoudre ce problème.

    Sur le net, j'ai bien vu qu'en 1er ligne, on pouvait mettre:
    mais si j'ai bien compris ceci est réservé aux utilisateurs Unix.

  2. #2
    Membre émérite
    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
    Par défaut
    C'est bien, tu as ajoutés les différent répertoires d'installation a PATH. Maintenant, le petit hic, c'est que quelquesoit les versions de python, le nom de leur exe respectifs est le même, ce qui à pour effet que lorsqu'on tape python dans une console système, la version de python executée sera la première trouvée . Je dirais que pour d=résoudre ce problème, il suffit d'aller dans le repertoire d'installation de chaque version de rennommer python.exe et pythonw.exe par python24.exe pythonw24.exe (pour la v 2.4 par exemple), et ainsi de suite...

    Les commandes à taper dans une console serait alors non plus python mais python24 ou python26 etc... pense à vérifier également les association pour explorer.

    Avoir le choix des versions à utiliser pour ce dernier, necessite un peu d'acrobatie du côté des registres, et j'avoue que j'ai pas envie de me pencher dessus, je l'ai jamais fait. c'est néanmoins très faisable, il faut retrouver la partie 'edit with IDLE' dans le registre, bien observer, et reproduire grosso merdo le même schéma.

    Bon courage

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Par défaut
    Bonjour,

    Je verrais deux autres solutions:

    La première en utilisant un script batch qui modifie la variable d'environnement PATH et exécute le script en question.
    Evidemment, il faudra au préalable enlever toutes les références à Python dans la variable PATH.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PYTHON24.BAT:
    @ECHO OFF
    CLS
    PATH=%PATH%;C:\PYTHON24\
    PYTHON %1 %2 %3 %4 %5 %6 %7 %8 %9
    Ainsi de suite pour les autres versions.

    Maintenant, la deuxième solution, c'est en utilisant Eclipse & PyDev.
    Dans les préférences de PyDev il est possible de définir plusieurs interpréteurs et ensuite dans les propriétés d'exécution du script de choisir l'interpréteur de son choix.
    C'est valable que pendant la période de développement du script.
    Mais, bon, quand le script est terminé, j'imagine que le choix de l'interpréteur l'est lui aussi!

    Salutations.

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Pour les petits projets en période de développement, Ulipad permet aussi de basculer très facilement d'un interpréteur Python à un autre.

  5. #5
    Membre émérite
    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
    Par défaut
    Pour avoir le choix des versions depuis explorer, je viens de me rendre compte que les manip avec les registre sont automatisées depuis le bon menu, et ça devient un jeu d'enfant...

    Marche à suivre:
    1. ouvrir l'explorer (ouvrir un dossier quoi..)
    2. Menu Outils
    3. Options des dossiers
    4. Onglet Types de fichiers
    5. Aller sur l'extension PY et cliquer sur le bouton Avancé
    6. Nouveau...
    7. mettre le nom de l'action dans le champ Action, cliquer sur Parcourir et selectionnez le python(24 ou 26...).exe
    8. Dans le champ "Application utilisée [...]", allez à la fin de la chaîne, et ajouter un espace plus "%1" (guillemets compris)
    9. Valider
    10. Repeter les étapes 6 à 9 pour chaques versions de python, une fois fait, choisir l'action par défaut à executer, puis valider toutes les fenêtres

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    Tout d'abord, merci à tous pour vos suggestions.

    Je me suis particulièrement intéressé à celles de N.tox.
    J'ai donc renommer mes fichiers python.exe et pythonw.exe par python24.exe pythonw24.exe ,et ainsi de suite... J'ai été surpris de voir que suite à celà lors du démarrage des IDLE concernés, un réinstallation s'en suivait. Ceci dit aucun problème
    Même chose quant aux petites manipulations dans 'explorer'. Les explications de N.tox sont très précises et tout fonctionne. Lorsque je veux démarrer un script, je fais un clic droit et je choisis la version de Python qui doit le démarrer.

    Cependant, mon problème n'est pas résolu...

    1/ En fait, si je démarre un scrit en choississant une version de Python ( ou si pour ce script, je lui indique en propriété 'démarrer avec telle version', il se trouve que ceci s'applique aussi aux autres scripts. Autrement dit, je suis obligé systématiquement de faire un clic droit pour choisir la version correcte.

    2/ Ensuite et c'est cela le plus important pour moi, je souhaite pouvoir démarrer un script par programmation càd un script en 2.6 doit pouvoir démarrer un script en 3.1


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import os
    os.system("C:\Documents and Settings\Chris33\Bureau\s'ouvre avec Python 3.1\monscript.py argument_transmi")

  7. #7
    Membre émérite
    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
    Par défaut
    Pour ça, le but est pratiquement le même. L'idée est de créer un script qui devra checker les 5 première lignes du script cible et reperer une balise indiquant quelle version de ptyhon utiliser pour lancer ce script cible.

    Donc pour ce faire, il faut tout d'abord créer le script de démarage :
    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
    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
     
    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) #lancement du script via python26
    else:#balise trouvée
        os.system(pythonpath[version]+' '+_file) #lancement du script via le bon python
    Ensuite :
    1. ouvrir l'explorer
    2. outils > option des dossiers > type de fichiers
    3. aller sur l'extension PY > avancé
    4. nouveau
    5. mettre le nom de l'action dans le champ Action, cliquer sur Parcourir et sélectionner python26.exe
    6. Dans le champ "Application utilisée [...]", allez à la fin de la chaîne, et ajouter un espace plus ,entre guillemet, le chemin complet vers le script de démarrage plus "%1" (guillemets compris)
    7. valider


    Et voilà ! J'ai pas test, mais j'ai fait une manip similaire qui fonctionne très bien, j'en déduis que cela devrait fonctionner.

    les script cibles devront donc comporter une balise, qui dans l'exemple suit le pattern suivant :
    où XX est le numero de version de python (24,26,30).

    Depuis la console système... ben... il est trop tard et je raisonne plus clairement...

  8. #8
    Membre Expert 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
    Par défaut
    Bonjour,

    Petite idée (je ne suis pas sous Windows donc à tester)
    Sous Windows la recherche dans le path est linéaire non ?
    Donc si dans le premier chemin (%SystemRoot%\system32 ?) il existe un 'python.bat' c'est lui qui est exécuté (non ?).

    Un bat du style :

    @echo off
    c:\cheminpython\ptyhon26.exe c:\cheminversmonlanceur\lanceurpython.py %1

    @+

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    encore merci à N.tox pour ta réponse.
    Je reprends ton exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pythonpath={'24':'D:\\MyPath24\\ptyhon24.exe',}
    Pour simplifier à l'extrème ton exemple, je souhaite ouvrir 'monfichier.py' crée en version 3.1 et qui se trouve:
    C:\Python31\MesscriptsenPython3

    Dois-je utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system("C:\\Python31\\MesscriptsenPython3\\monfichier.py argument")
    auquel cas je ne comprends toujours pas comment ce script utilisera la bonne version de Python.

    ou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system("C:\\Python31\\MesscriptsenPython3\\python31.exe monfichier.py argument")
    Dans ce dernier cas l'interpréteur serait bien fourni. Mais dans les 2 cas, ceci ne semble pas fonctionner

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 293
    Par défaut
    Il semble qu'effectivement la bonne commande soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    os.system("C:\Python31\pythonw.exe"+" essai5.py")
    Cependant voici 2 modules:

    module1: test_essai5.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import sys
    import os
     
    print" Le script : ",sys.argv[0]," démarre avec : ",sys.executable
    os.system("C:\Python31\pythonw.exe"+" essai5.py")
    module2: essai5.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import sys
    print(" Le script : ",sys.argv[0]," démarre avec : ",sys.executable)
    input("tape une lettre...")



    Le module 2 lancé seul donne :
    Le script : C:\Python31\MesscriptsenPython31\essai5.py démarre avec : C:\Python31\pythonw.exe
    tape une lettre...


    Le module 1 lancé seul donne :
    Le script : C:\Python26\MesscriptsenPython26\test_cible26.py démarre avec : C:\Python26\pythonw.exeJe vois bien une fenêtre dos apparaître mais elle disparaît aussitôt et cela malgré la présence d'une instruction input dans le module concerné...

    Autre chose:
    Lorsque j'ai renommé les dossier exécutable, une réinstallation s'en est suivi et à nouveau les dossiers python.exe sont recréés d'office

+ Répondre à la discussion
Cette discussion est résolue.

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