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 :

PYTHONUTF8 path option


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut PYTHONUTF8 path option
    win10x64-pro / python3.7.0 / pyscripter 3.4.1 /

    bon, ne m'étant jamais interressé à cette variable path,
    me voilà fort ennuyé maintenant que cette option PYTHONUTF8 doit y être ajouté...

    https://www.python.org/dev/peps/pep-0540/

    c'est un nouveau mode python qui permet (il me semble) d'enregistrer (open(file).write()) en UTF8 sous windows, donc d'ignorer l'environnement local en CP1252...

    toutefois, il faut pouvoir l'activer.. ;o)

    ça doit pas être bien compliqué (c'est du python) mais malgré mes recherches,
    les détails "explicites" de l'ajout d'une option python au PATH windows m'échappe(totalement)

    merci d'avance...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Quetzal Voir le message
    ça doit pas être bien compliqué (c'est du python) mais malgré mes recherches,
    les détails "explicites" de l'ajout d'une option python au PATH windows m'échappe(totalement)
    Ajouter une variable à votre environnement Windows , c'est pas du Python mais du Windows.
    Pour l'activer côté Python, il suffit d'ajouter -X utf8 à la ligne de commande qui lance l'interpréteur: i.e. py -X utf8 monscript.py.

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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    exact, exact, exact... trop simple
    mais c'est pas exactement ça

    le mode UTF8

    c'est pas
    py -X utf8 monscript.py.
    comme tu l'indiques pour un ficher unique

    mais ouvrir CMD
    C:\Windows\System32>Python /? (pour l'aide)

    C:\Windows\System32>python -X utf8
    >>> locale.getpreferredencoding:, UTF8

    mais ça marche que momentanément ça revient
    >>>locale.getpreferredencoding(), cp1252

    donc pas le choix, il faut installer la variable PYTHONUTF8 dans le path

    et ça... je sais pas faire... (enfin pas pour l'instant)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Quetzal Voir le message
    donc pas le choix, il faut installer la variable PYTHONUTF8 dans le path

    et ça... je sais pas faire... (enfin pas pour l'instant)
    Faire un peu de recherche sur Internet pour voir comment se définit une variable d'environnement Windows, c'est pas si compliqué. Et si vous avez la flemme, postez votre question dans un forum Windows plutôt que dans un forum Python serait la moindre des choses: c'est pas parce que vous apprenez à programmer que vous devez faire l'impasse sur le minimum côté administration système, gestion des fichiers, ... et ce quelque soit le langage (sauf peut être Java) quelque part "programmer" va aussi se traduire par des interactions avec cet environnement système.

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

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Comme je travaille souvent sous Windows 10, je vais dire comment je fais. Je connais 2 méthodes:

    - avec l'explorateur de fichiers. S'il y a une ligne "Ce PC", clic droit et "propriétés". Puis clic sur le lien "Paramètres système avancés" et clic sur "Variables d'environnement". On cherche la variable "PATH" => modifier.

    - avec les paramètres de Windows, on accède à la ligne de recherche et on cherche "envir" => il est alors proposé "modifier les variables d'environnement" => on retrouve la même fenêtre que précédemment.

    Attention aux fausses manœuvres: avec les variables d'environnement, on est dans les paramètres de fonctionnement de Windows!
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Si tu chipotes avec Python, je te conseillerai d'installer un nouvel environnement pour faire tes tests pour ne pas toucher au python installer avec l'OS.

    Via: pipenv
    Si la réponse vous a aidé, pensez à cliquer sur +1

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    c'est bien ce que je pensais, ou ce que j'avais entendu parler a son propos...
    plutôt casse-gueule et comme je ne vais pas y farfouiller tout les 4matins...
    je n'y touche seulement à l'installation de python, pour vérifier que celui-ci est bien dans le path)
    et ensuite... (en fait y'a pas de suite) python marche c'est l'éssentiel... et j'oublie le path...

    donc devoir y toucher et en plus avec des options qui ne sont pas hyper documentée, python37 est juste sorti et pas grand-grand chose sur stackoverflow...

    j'ai essayer avec os.environ, de voir les variable dispo... mais comme aucune n'y sont, je suppose que cela ne doit pas se faire par là... plutôt en ligne de code... mais la var PYTHONCOERCECLOCALE devant-être fixé a 0 (désactivée)...

    je ne connais pas la méthode pour ce bien faire avec ce genre de var... sinon y'a comme plus haut: -X utf8... mais cela ne dure que le temps de le dire avant de revenir en CP1252...

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il me semble qu'il y a erreur dans la formulation: il faut AJOUTER la variable d'environnement "PYTHONUTF8" en lui donnant la valeur "1" (activée) ou "0" (désactivée). On ne parle pas de "PATH" qui est une autre variable d'environnement, et qui donne la liste des répertoires contenant les exécutables par défaut.

    Ajouter ou modifier les variables d'environnement n'est tout de même pas aussi dangereux pour l'OS que d'aller farfouiller dans les fichiers de registre...

    Et, à mon avis, la méthode graphique pour Windows que j'ai donnée est moins risquée que d'essayer de faire ça en console (setx...).

    Autre idée: je ne sais pas si on peut faire ça au début de chaque programme Python. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import os
    os.environ["PYTHONUTF8"] = "1"
    A voir si ça change quelque chose pour Python 3.7 (je n'ai que Python 3.5 pour l'instant).
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par tyrtamos Voir le message
    Autre idée: je ne sais pas si on peut faire ça au début de chaque programme Python. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import os
    os.environ["PYTHONUTF8"] = "1"
    A voir si ça change quelque chose pour Python 3.7 (je n'ai que Python 3.5 pour l'instant).
    Techniquement çà ne peut pas fonctionner car les variables d'environnement n'étant pas supposé changer pendant l'exécution du programme, aucune raison pour qu'elles soient relues après le démarrage.
    Par contre, on peut lancer son script via Popen après avoir modifié les variables d'environnement que l'on lui passe en paramètre.
    On peut aussi utiliser le shebang #! /usr/bin/python -X utf8 qui sera géré par le Python Launcher for Windows.

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

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    et que pensez-vous de la var PYTHONCOERCECLOCALE qui "si j'ai bien lu" doit-être désactivé... c'est plutôt vers elle après re et relecture de la doc(my english!) que je me tourne...

    après tout, python 3.7 est capable d'enregistrer des .txt en utf-8 (vérifié avec notepad++) et me l'a fait deux ou trois fois, mais je ne sais pas pourquoi(pour l'instant) (a-priori après une sortie de veille ou un reboot, le prmeier record avec open/write se "ferais" parfois sans tenir compte de locale.preferedencoding()...

    ensuite, ça revient en mode CP1252... donc il doit pas être loin de toujours pouvoir le faire, a condition (à vue de nez de désactiver pythoncoercelocale.. (available dans cmd > python /?... )

    j'ai essayer un cmd> python PYTHONCOERCELOCALE=0, mais il ne le reconnait pas, pas plus que PYTHONUTF8=1

    j'ai pas pousser plus loin en CMD pour l'instant... trop peur de faire une connerie(même si il y a des filets sur CMD)

    a+

    merci pour vos réponses...

  11. #11
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Juste pour le fun (merci à wiztricks pour l'idée): lancer l'exécution d'un programme python quelconque avec un environnement enrichi de la variable "PYTHONUTF8".

    A titre de test, on lancera dans un nouveau processus le code suivant nommé (par exemple) "test.py" qui se contentera d'afficher la valeur de "PYTHONUTF8" ou de signaler une erreur si elle n'est pas trouvée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import os
     
    env = os.environ
     
    try:
        print(env["PYTHONUTF8"])
    except KeyError as msgerr:
        print("Erreur: ", msgerr)
    Et maintenant, on va créer un nouveau code Python appelé (par exemple) "pythonz.py" qui lancera le code précédent dans un process (module subprocess):

    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
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import sys
    import os
     
    from subprocess import Popen
     
    ##############################################################################
    if __name__ == '__main__':
     
        args = " ".join(sys.argv[1:])
     
        commande = "python.exe {0}".format(args) 
     
        # ajoute la variable d'environnement
        varenv = os.environ
        varenv['PYTHONUTF8'] = "1"
     
        # exécute la commande
        with Popen(commande, env=varenv, universal_newlines=True) as process:
            rc = process.wait()
     
        print("Fin d'exécution avec le résultat:", rc)
    Avec ça, dans une console cmd.exe, on écrit la ligne de commande:

    Et le code "test.py" étant lancé avec le nouvel environnement, va afficher la valeur '1' de la variable d'environnement 'PYTHONUTF8'! Objectif atteint.

    On peut alors passer pythonz.py en pythonz.exe avec pyinstaller, et remplacer l'ancien "python.exe" comme programme par défaut dans Windows. Ainsi, n'importe quel programme python .py appelera pythonz.exe, qui le lancera avec la bonne variable d'environnement!

    .
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    je vois a peu près de quoi il s'agit... ayant déjà utilisé popen pour des trucs dont je ne me souvient plus, (des mauvais souvenir, ça à marcher, mais... casse-gueule)

    donc, pas impossible que j'y y arrive... mais vas me falloir un peu de yoga avant de plonger dans ce code-python là..

    merci bien pour votre aide...(ô combien préci-eu-se)

    si c'est ça, je l'aurais jamais trouve par moi-même en tout cas...

    A+

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    On peut alors passer pythonz.py en pythonz.exe avec pyinstaller, et remplacer l'ancien "python.exe" comme programme par défaut dans Windows. Ainsi, n'importe quel programme python .py appelera pythonz.exe, qui le lancera avec la bonne variable d'environnement!
    Et tout çà juste pour éviter d'apprendre à modifier ses variables d'environnement sous Windows ou écrire un shebang tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/usr/bin/python3 -X utf8
    # -*- coding: utf-8 -*-
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    je pensais qu'avec python 3 il n'y avait plus de nécessité à produire ce type d'en-tête pour chaque fichier ??? du fait que tout est UTF8 ??

    mais si cela suffit c'est dejà plus de mon niveau... merci bien...

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Quetzal Voir le message
    je pensais qu'avec python 3 il n'y avait plus de nécessité à produire ce type d'en-tête pour chaque fichier ??? du fait que tout est UTF8 ??
    Il n'y a pas que l'interpréteur Python qui utilise cette information là, certains éditeurs de texte s'appuient aussi dessus (et ne travaillent pas toujours en utf-8 par défaut).

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

Discussions similaires

  1. Installation Python : path
    Par Frederick_Etudiant dans le forum Déploiement/Installation
    Réponses: 9
    Dernier message: 04/04/2010, 23h27
  2. Java/Python : paths qui changent
    Par rednik dans le forum Général Java
    Réponses: 0
    Dernier message: 27/07/2009, 18h03
  3. Path Python et librairies
    Par metalamania dans le forum Général Python
    Réponses: 2
    Dernier message: 16/04/2008, 01h11
  4. Utilisation de context.xml : option path
    Par hugo123 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 25/09/2006, 09h16
  5. [JNI]problème option -Djava.library.path
    Par sylviiie dans le forum ANT
    Réponses: 2
    Dernier message: 18/05/2004, 08h54

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