web-dev-qa-db-fra.com

pip install - locale.Error: paramètre régional non pris en charge

Plein stacktrace: 

➜  ~ pip install virtualenv
Traceback (most recent call last):
  File "/usr/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main
    locale.setlocale(locale.LC_ALL, '')
  File "/usr/lib64/python3.4/locale.py", line 592, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

Sur le même serveur, j'ai réussi à exécuter pip install virtualenv avec python 2.7.x. 

Maintenant, je viens d'installer python3.4 en utilisant curl https://bootstrap.pypa.io/get-pip.py | python3.4

➜  ~ pip --version
pip 8.1.1 from /usr/lib/python3.4/site-packages (python 3.4)

pip uninstall virtualenv génère également la même erreur

185
ericn

La cause première est: votre variable d'environnement LC_ALL est manquante ou invalide 

Réponse courte-  

il suffit de lancer la commande suivante:

$ export LC_ALL=C

Si l'erreur persiste dans les nouvelles fenêtres de terminal, ajoutez-la au bas de votre fichier .bashrc.

Longue réponse-

Voici mes paramètres locale:

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

Python2.7

    $ uname -a
    Linux debian 3.16.0-4-AMD64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux
    $ python --version
    Python 2.7.9
    $ pip --version
    pip 8.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
    $ unset LC_ALL
    $ pip install virtualenv
    Traceback (most recent call last):
      File "/usr/local/bin/pip", line 11, in <module>
        sys.exit(main())
      File "/usr/local/lib/python2.7/dist-packages/pip/__init__.py", line 215, in main
        locale.setlocale(locale.LC_ALL, '')
      File "/usr/lib/python2.7/locale.py", line 579, in setlocale
        return _setlocale(category, locale)
    locale.Error: unsupported locale setting
    $ export LC_ALL=C
    $ pip install virtualenv
    Requirement already satisfied (use --upgrade to upgrade): virtualenv in /usr/local/lib/python2.7/dist-packages
497
ROY

Exécutez la commande suivante (cela fonctionnera):

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
Sudo dpkg-reconfigure locales
30
Rahi.Shah

Quelqu'un peut le trouver utile. Vous pouvez placer ces paramètres régionaux dans le fichier .bashrc, qui se trouve généralement dans le répertoire de base.
Ajoutez simplement cette commande dans .bashrc:
export LC_ALL=C
puis tapez source .bashrc
Maintenant, vous n'avez pas besoin d'appeler cette commande manuellement à chaque fois, par exemple lorsque vous vous connectez via ssh.

26
Ivan Semochkin

Bien que vous puissiez définir les paramètres régionaux exportant une variable env, vous devrez le faire chaque fois que vous démarrez une session. Définir les paramètres régionaux de cette manière résoudra le problème de manière permanente:

Sudo apt-get install locales
Sudo locale-gen en_US.UTF-8
Sudo echo "LANG=en_US.UTF-8" > /etc/default/locale
2
Marco Lavagnino

Pour Dockerfile, cela fonctionne pour moi:

RUN locale-gen en_US.UTF-8  
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8  

Comment installer locale-gen?

docker ubuntu/bin/sh: 1: locale-gen: non trouvée

2
Ben

[Cette réponse concerne uniquement la plate-forme Linux]

La première chose que vous devez savoir est que la plupart du chemin du fichier de configuration de la locale peut être obtenu à partir de localedef --help:

$ localedef --help | tail -n 5
System's directory for character maps : /usr/share/i18n/charmaps
                       repertoire maps: /usr/share/i18n/repertoiremaps
                       locale path    : /usr/lib/locale:/usr/share/i18n
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>

Voir le dernier /usr/share/i18n? C'est ici que se trouve votre fichier de configuration xx_XX.UTF-8:

$ ls /usr/share/i18n/locales/zh_*
/usr/share/i18n/locales/zh_CN  /usr/share/i18n/locales/zh_HK  /usr/share/i18n/locales/zh_SG  /usr/share/i18n/locales/zh_TW

Maintenant quoi ? Nous devons les compiler dans un binaire d'archive. Un des moyens, par exemple supposons que j'ai /usr/share/i18n/locales/en_LOVE, je peux l'ajouter à la liste de compilation, c'est-à-dire le fichier /etc/locale-gen:

$ tail -1 /etc/locale.gen 
en_LOVE.UTF-8 UTF-8

Et compilez-le en binaire avec Sudo locale-gen:

$ Sudo locale-gen 
Generating locales (this might take a while)...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  ...
  en_LOVE.UTF-8... done
Generation complete.

Et maintenant, mettez à jour les paramètres régionaux par défaut du système avec la LANG, LC_ALL ... etc. désirée avec ce update-locale:

Sudo update-locale LANG=en_LOVE.UTF-8

update-locale signifie également mettre à jour ce fichier /etc/default/locale qui sera source par le système lors de la connexion aux variables d’environnement d’installation:

$ head /etc/default/locale 
#  File generated by update-locale
LANG=en_LOVE.UTF-8
LC_NUMERIC="en_US.UTF-8"
...

Mais nous ne voudrons peut-être pas redémarrer pour prendre effet, nous pouvons donc nous en servir pour la variable d’environnement de la session Shell en cours:

$ . /etc/default/locale

Que diriez-vous de Sudo dpkg-reconfigure locales? Si vous y réfléchissez, vous saurez que cette commande sert essentiellement d’interface graphique pour simplifier les étapes ci-dessus, c.-à-d. Editer /etc/locale.gen -> Sudo locale-gen -> Sudo update-locale LANG=en_LOVE.UTF-8

Pour python, tant que /etc/locale.gen contient ce candidat de locale et que locale.gen soit compilé, setlocale(category, locale) devrait fonctionner sans jets locale.Error: unsupoorted locale setting. Vous pouvez vérifier que la chaîne correcte en_US.UTF-8/en_US/....etc doit être définie dans setlocale(), en observant le fichier /etc/locale.gen, puis en supprimant le commentaire et en le compilant comme vous le souhaitez. zh_CN GB2312 sans point dans ce fichier signifie que la chaîne correcte est zh_CN et zh_CN.GB2312.

1
林果皞

J'ai le même problème, et"export LC_ALL=c" ne fonctionne pas pour moi ,
Essayezexport LC_ALL="en_US.UTF-8"(cela fonctionnera).

0
Benyamin Jafari

Le message d'erreur indique un problème avec les paramètres régionaux. Pour résoudre ce problème, comme indiqué par d'autres réponses, vous devez modifier vos paramètres régionaux.

Sur Mac OS X Sierra, j’ai constaté que la meilleure façon de procéder consistait à modifier le fichier ~/bash_profile comme suit:

export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"

Cette modification ne sera pas immédiatement évidente dans votre session Cli actuelle, à moins que vous ne rechargiez le profil bash à l'aide de: source ~/.bash_profile.

Cette réponse est assez proche des réponses que j'ai postées à d'autres questions non identiques et non dupliquées (c'est-à-dire non liées à pipenv), mais qui nécessitent la même solution.

Au modérateur: Avec respect; ma réponse précédente a été supprimée pour cette raison, mais j'estime que c'était un peu ridicule, car cette réponse s'applique presque toujours lorsque l'erreur est "un problème de paramètres régionaux" ... cette erreur.

Ainsi, A) n'a pas de sens de marquer les questions comme des doublons et B) n'a pas de sens d'adapter la réponse non plus, car le correctif est très simple, est identique dans tous les cas et ne bénéficie pas de décoration.

0
geoidesic

Ubuntu:

$ Sudo vi /etc/default/locale

Ajouter le paramètre ci-dessous à la fin du fichier.

LC_ALL = en_US.UTF-8

0
saneryee