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 :

Accéder aux variables d'environnement du ~/.bashrc


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Par défaut Accéder aux variables d'environnement du ~/.bashrc
    Bonjour,

    j'ai besoin d'accéder, dpuis un script python à une variable d'environnement $MPJ_HOME.

    Je suis sous linux, et cette variable est déclarée dans mon ~/.bashrc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export MPJ_HOME=/home/arnaud/mpj-v0_35
    Elle est bien vue depuis le bash, puisque echo $MPJ_HOME me renvoie le bon path

    Cette variable n'est pas vue depuis python et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print os.environ.get('MPJ_HOME')
    me renvoie 'None'

    Sauriez-vous me dire comment faire en sorte que les variables d'environnement du ~/.bashrc soient intégrées au dictionnaire de os.environ, ou encore ou placer ces déclarations de variables pour qu'elles soient visibles depuis python ?

    merci !

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Salut

    Quand une variable est exportée, elle est alors automatiquement recopiée dans tous les fils générés à partir du shell qui a exporté la variable , et donc y compris dans Python.

    Exemple
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    export toto="truc"
    python
    >>> import os
    >>> print os.environ["toto"]
    truc
    >>> print os.environ.get("toto")
    truc


    Donc si Python ne la voit pas, c'est qu'elle n'est pas exportée. Et donc si elle est exportée dans ~/.bashrc c'est que ~/.bashrc n'a pas été appliqué.

    Tente donc un source ~/.bashrc et refais ton test...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Par défaut
    Merci pour la réponse,

    hum, je dirais que la variables est bien exportée, car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    arnaud@arnaud-desktop:~$ echo $MPJ_HOME 
    /home/arnaud/mpj-v0_35
    Sinon, ça fonctionne effectivement si je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    arnaud@arnaud-desktop:~$ python 
    Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
    [GCC 4.4.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import os
    >>> print os.environ["MPJ_HOME"]
    /home/arnaud/mpj-v0_35
    Je mets ça dans un script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import subprocess
    import os
    print os.environ.get('MPJ_HOME')
    Ca fonctionne de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    arnaud@arnaud-desktop:$ python test_thread.py 
    /home/arnaud/mpj-v0_35
    Donc, ça fonctionne, mais le problème arrive quand je suis dans gedit (ubuntu), en utilisant le greffon 'outils externes', pour lequel j'ai configuré le raccourci CTRL+E pour lancer mon script facilement... la console me renvoie 'None'.

    J'ai bien conscience que là, ça sort un peu du topic, et n'a plus grand chose à voir avec python directement... je vais chercher un solution ...

    merci encore !

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par alefriedx Voir le message
    Donc, ça fonctionne, mais le problème arrive quand je suis dans gedit (ubuntu), en utilisant le greffon 'outils externes', pour lequel j'ai configuré le raccourci CTRL+E pour lancer mon script facilement... la console me renvoie 'None'.
    En fait, le fichier .bashrc est traité quand tu lances un shell. Donc ensuite tout ce que tu fais depuis le shell prend bien évidemment en compte ce fichier.

    Mais depuis un outil qui n'est pas du shell, .bashrc n'est pas pris en compte.

    Solution 1: tu configures ton ctrl-e pour qu'il source le .bashrc avant de lancer ton programme Python (à la limite tu crées un script qui fait tout ça et tu relies le script au ctrl-e)

    Solution 2: tu places ta variable dans le fichier .bash_profile qui, contrairement au .bashrc, est pris en compte lorsque tu te connectes

    Citation Envoyé par alefriedx Voir le message
    J'ai bien conscience que là, ça sort un peu du topic, et n'a plus grand chose à voir avec python directement... je vais chercher un solution ...
    Oui - On a quitté le domaine Python pour entrer dans le domaine "environnement et paramétrage". C'est plutôt de l'admin...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Accéder aux variable de la classe MyAppView
    Par greghass dans le forum MFC
    Réponses: 3
    Dernier message: 21/11/2006, 15h38
  2. Comment acceder aux variables d'environnement en JAVA ?
    Par Battosaiii dans le forum Langage
    Réponses: 2
    Dernier message: 09/11/2006, 18h47
  3. Accéder aux variables se trouvant dans un autre fichier
    Par towogy dans le forum Autres langages pour le Web
    Réponses: 9
    Dernier message: 18/08/2006, 15h06
  4. [WAS 5]Accéder aux variables WAS
    Par thibaut dans le forum Websphere
    Réponses: 1
    Dernier message: 16/08/2006, 07h34
  5. Réponses: 1
    Dernier message: 07/07/2006, 14h56

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