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 :

Variables d'Environnement et Python


Sujet :

Python

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 288
    Par défaut Variables d'Environnement et Python
    Bonjour,

    Aucune des 3 fonctions de récupération des variables d'environnement n'arrive à restituer de résultat alors qu'un fichier .ENV existe bel et bien dans le même répertoire que le programme python (j'ai même essayé de le placer dans le répertoire parent, sans résultat).

    Avec os.environ.get je retrouve le NONE.

    Par ailleurs, n'ayant pu enregistrer un fichier .ENV avec seulement la partie extension et sans nom j'ai dû lui attribuer un nom tout en gardant l'extension .ENV et il est bien reconnu comme fichier d'environnement par le système d'exploitation.

    Toutes vos réflexions et contributions sont les bienvenues.

    Vous en remerciant d'avance.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    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 814
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par medchok Voir le message
    Aucune des 3 fonctions de récupération des variables d'environnement
    Lesquelles ???

    Citation Envoyé par medchok Voir le message
    n'arrive à restituer de résultat
    De quelle façon vérifies-tu qu'il y a (ou n'y a pas) de résultat? Ce n'est pas anodin comme question car selon les méthodes ça peut être trompeur. Un exemple: 2+3 dans la console affiche 5 mais 2+3 dans un script n'affiche rien (il faut explicitement demander print()). Tandis que None lui, que ce soit dans la console ou dans un script, n'affiche rien.

    Citation Envoyé par medchok Voir le message
    alors qu'un fichier .ENV existe bel et bien dans le même répertoire que le programme python (j'ai même essayé de le placer dans le répertoire parent, sans résultat).
    Un fichier d'extension ".env" n'est pas synonyme d'environnement pour Python (il semble que ce genre de fichier soit utilisé par Acrobat).
    En fait, je ne suis pas certain que tu aies toi-même bien compris ce qu'est un environnement.
    Un environnement désigne un ensemble de variables intégrées dans un espace de travail et permettant de personnaliser cet espace. Sous les OS de type Unix/Linux, on trouvera par exemple une variable "HOME" désignant le dossier de base de l'utilisateur. On trouvera une variable "LANG" désignant le langage utilisé, etc etc.
    Tout programme récupère cet environnement et peut l'utiliser. Python, étant un programme, ne fait donc pas exception.
    Cette récupération se fait via os.environ qui est un dictionnaire contenant la variable en clé, et sa valeur en attribut. Donc pour les exemples précédents, ce sera os.environ["HOME"] et os.environ["LANG"].

    Citation Envoyé par medchok Voir le message
    Avec os.environ.get je retrouve le NONE.
    os.environ étant un dictionnaire, il possède effectivement une méthode get(). Mais déjà il faut dire get(de_quoi), comme pour tout dictionnaire. Et effectivement si "de_quoi" n'existe pas, alors la méthode retourne None, comportement habituel et connu. Donc si tu lui as demandé un "de_quoi" qui n'existe pas, je ne vois rien d'anormal au résultat None.

    Citation Envoyé par medchok Voir le message
    Par ailleurs, n'ayant pu enregistrer un fichier .ENV avec seulement la partie extension et sans nom j'ai dû lui attribuer un nom tout en gardant l'extension .ENV
    Euh oui, sous Zindow (qui fait la distinction entre "nom" et "extension") on ne peut effectivement pas créer de fichier avec un nom vide (l'extension n'étant pas considéré comme faisant pas partie du nom). Sous Linux ce souci ne se pose pas car dans cet OS l'extension n'est pas une caractéristique "à part" et donc on peut créer des fichiers sans rien devant le "point" (d'où le ".profile", ".vimrc" et autres fichiers émaillant le dossier de base de chaque user).

    Citation Envoyé par medchok Voir le message
    et il est bien reconnu comme fichier d'environnement par le système d'exploitation.
    Donc zindow si j'ai bien deviné (car là encore, si tu avais précisé...)
    Toutefois là encore, il faut faire la distinction entre "environnement de travail" et "fichier d'environnement" (sous-entendu "d'environnement d'un truc"). D'après ce que je lis sur le net, un ".env" sous zindow est un fichier d'environnement pour Acrobat.

    Citation Envoyé par medchok Voir le message
    Toutes vos réflexions et contributions sont les bienvenues.
    Eh ben voilà.
    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
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 690
    Par défaut
    Salut,

    Citation Envoyé par medchok Voir le message
    Toutes vos réflexions et contributions sont les bienvenues
    Chercher "python variable environnement" serait un bon point de départ pour trouver un tas d'articles qui expliquent ce qu'elles sont et comment les utiliser depuis Python.
    note: ce que vous êtes supposé avoir fait avant de poster...

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

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    288
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 288
    Par défaut
    Un Grand Merci pour vos réponses et vôtre intérêt.

    A moins que je ne me trompe, la doc python parle d'un fichier .ENV (pouvant stocker des variables d'environnement) repérable et téléchargeable par l'instruction "load_dotenv()", Merci de me corriger wiztricks.

    Comme je suis (effectivement) sous Windows j'ai dû attribuer un nom à ce fichier en plus de l'extension .ENV, pour Windows il a bien été reconnu comme un fichier d'environnement.

    Tous les tests, faits en "encerclant" les instructions par des "print" montrent qu'aucune des commandes "os.environ", "os.environ.get" ni "os.getenv" (bien sûr avec les bon paramètres : noms des variables comme indiqué dans le fichier .ENV) n'arrivent à récupérer les valeurs des variables stockées.

    Visiblement le problème réside dans le fichier .ENV ou dans sa reconnaissance par python, ce qui me fait rebondir sur les propos de Sve@r pour vous demander de me fournir plus de détails sur la création des variables d'environnements au sens python, particulièrement comment pourrait-on les stocker dans un fichier pour les récupérer et utiliser plus tard sous python.

    Vous remerciant pour vôtre aide et intérêt

  5. #5
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 914
    Billets dans le blog
    7
    Par défaut
    Bonjour,
    Citation Envoyé par medchok Voir le message

    A moins que je ne me trompe, la doc python parle d'un fichier .ENV (pouvant stocker des variables d'environnement) repérable et téléchargeable par l'instruction "load_dotenv()",
    Voir https://pypi.org/project/python-dotenv/ pour comprendre l'usage de load_dotenv
    Je lis (pas testé) :
    Pour vous aider, vous pouvez ajouter Python-dotenv à votre application pour qu'elle charge la configuration depuis un fichier .env lorsqu'il est présent (par exemple en développement) tout en restant configurable via l'environnement :
    note: L'extension du fichier qui nous intéresse est .env et non .ENV

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 690
    Par défaut
    Salut,

    Citation Envoyé par medchok Voir le message
    A moins que je ne me trompe, la doc python parle d'un fichier .ENV (pouvant stocker des variables d'environnement) repérable et téléchargeable par l'instruction "load_dotenv()"
    Le plus simple serait d'indiquer la page via une URL...

    Si on cherche avec load_dotenv, on trouve une bibliothèque externe qui utilise des fichiers .env pour configurer une application avec des fichiers editable (pas les variables d'environnement accédées avec os.environ).

    Ceci dit Python a déjà cette fonctionnalité en standard avec configparser.

    Au delà de constater que vous avez des difficultés à décrire le problème rencontré de façon intelligible (en soit ce n'est pas grave, difficile de savoir qu'on n'est pas dans votre tête et que ce qui vous semble évident mérite précision pour savoir de quoi on parle)... la vraie question est de savoir ce que vous cherchez à faire (pourquoi vous pensez que ça va vous aider de faire fonctionner ce truc).

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

  7. #7
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 914
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ceci dit Python a déjà cette fonctionnalité en standard avec configparser.
    Utiliser un fichier json devrait aussi faire l'affaire...

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 690
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Utiliser un fichier json devrait aussi faire l'affaire...
    Comme n'importe quel fichier texte...

    Concernant les informations de configuration d'un programme, créer un .ini comme tout le monde avec le même format que les autres applications facilite la vie des utilisateurs et réduit le temps à passer côté développeurs pour documenter un format plus exotique (qui sert à autre chose).

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

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 048
    Par défaut
    A moins que je ne me trompe, la doc python parle d'un fichier .ENV
    Je corrige, c'est .env et non .ENV

    Si on utilise load_dotenv sans paramètre, alors le fichier .env doit se trouver au même endroit que le fichier qui exécute l'application.

Discussions similaires

  1. [Python 2.X] Lire et utiliser fichier contenant variable d'environnement dans script Python
    Par ptonnerre dans le forum Général Python
    Réponses: 1
    Dernier message: 05/12/2015, 18h57
  2. probleme avec variable d'environnement pour python
    Par k_boy dans le forum Général Python
    Réponses: 4
    Dernier message: 24/07/2011, 01h41
  3. Python et variables d'environnement
    Par liouan dans le forum Général Python
    Réponses: 2
    Dernier message: 16/11/2010, 09h36
  4. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  5. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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