it-swarm.com.de

pip install - locale.Error: nicht unterstützte Locale-Einstellung

Full 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

Auf demselben Server habe ich pip install virtualenv erfolgreich mit Python 2.7.x ausgeführt. 

Jetzt habe ich python3.4 mit curl https://bootstrap.pypa.io/get-pip.py | python3.4 installiert. 

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

pip uninstall virtualenv löst den gleichen Fehler aus

185
ericn

Die Hauptursache ist: Ihre Umgebungsvariable LC_ALL fehlt oder ist irgendwie ungültig 

Kurze Antwort-  

führen Sie einfach den folgenden Befehl aus:

$ export LC_ALL=C

Wenn der Fehler in neuen Terminal-Fenstern ständig angezeigt wird, fügen Sie ihn am Ende Ihrer .bashrc-Datei hinzu.

Lange Antwort-

Hier sind meine locale-Einstellungen:

$ 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

Führen Sie den folgenden Befehl aus (es wird funktionieren):

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

Jemand kann es nützlich finden. Sie können diese Ländereinstellungen in die .bashrc-Datei einfügen, die sich normalerweise im Basisverzeichnis befindet.
Fügen Sie diesen Befehl einfach in .bashrc hinzu:
export LC_ALL=C
dann source .bashrc
Jetzt müssen Sie diesen Befehl nicht jedes Mal manuell aufrufen, wenn Sie beispielsweise eine Verbindung über ssh herstellen.

26
Ivan Semochkin

Während Sie das Gebietsschema beim Exportieren einer Umgebungsvariablen festlegen können, müssen Sie dies bei jedem Start einer Sitzung tun. Wenn Sie ein Gebietsschema auf diese Weise festlegen, wird das Problem dauerhaft gelöst:

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

Für Dockerfile funktioniert das für mich:

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  

Wie installiere ich locale-gen?

docker ubuntu/bin/sh: 1: locale-gen: nicht gefunden

2
Ben

[Diese Antwort gilt nur für Linux-Plattformen]

Das erste, was Sie wissen sollten, ist, dass der größte Teil der Locale-Konfigurationsdatei von localedef --help abgerufen werden kann:

$ 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>

Siehe den letzten /usr/share/i18n? Hier befindet sich Ihre xx_XX.UTF-8-Konfigurationsdatei:

$ 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

Was jetzt ? Wir müssen sie in Archiv-Binärdateien kompilieren. Ein Weg, z. Angenommen, ich habe /usr/share/i18n/locales/en_LOVE, ich kann es in die Kompilierliste einfügen, d. h. /etc/locale-gen-Datei:

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

Und kompilieren Sie es mit Sudo locale-gen in eine Binärdatei:

$ 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.

Aktualisieren Sie nun das Standard-Gebietsschema des Systems mit der gewünschten LANG, LC_ALL ... usw. mit diesem update-locale:

Sudo update-locale LANG=en_LOVE.UTF-8

update-locale bedeutet eigentlich auch das Aktualisieren dieser /etc/default/locale-Datei, die bei der Anmeldung in Setup-Umgebungsvariablen vom System als Quelle angegeben wird:

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

Wir möchten jedoch keinen Neustart durchführen, um wirksam zu werden, sodass wir ihn in der aktuellen Shell-Sitzung einfach an die Umgebungsvariable senden können:

$ . /etc/default/locale

Wie wäre es mit Sudo dpkg-reconfigure locales? Wenn Sie herumspielen, werden Sie wissen, dass dieser Befehl im Wesentlichen als GUI fungiert, um die obigen Schritte zu vereinfachen, d. H. Bearbeiten /etc/locale.gen -> Sudo locale-gen -> Sudo update-locale LANG=en_LOVE.UTF-8

Solange /etc/locale.gen diesen Locale-Kandidaten enthält und locale.gen kompiliert wird, sollte für Python setlocale(category, locale) ohne Ausdrücke locale.Error: unsupoorted locale setting funktionieren. Sie können die korrekte Zeichenfolge en_US.UTF-8/en_US/....etc überprüfen, die in setlocale() festgelegt werden soll, indem Sie die /etc/locale.gen-Datei beobachten. Anschließend können Sie das Kommentarzeichen entfernen und wie gewünscht kompilieren. zh_CN GB2312 ohne Punkt in dieser Datei bedeutet, dass die richtige Zeichenfolge zh_CN und zh_CN.GB2312 ist.

1
林果皞

Ich habe das gleiche Problem und"export LC_ALL=c" hat bei mir nicht funktioniert ,
Versuchen Sieexport LC_ALL="en_US.UTF-8"(es wird funktionieren).

0
Benyamin Jafari

Die Fehlermeldung weist auf ein Problem mit der Ländereinstellung hin. Um dies durch andere Antworten zu beheben, müssen Sie Ihr Gebietsschema ändern.

Unter Mac OS X Sierra habe ich festgestellt, dass der beste Weg, dies zu tun, darin bestand, die ~/bash_profile-Datei wie folgt zu ändern:

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

Diese Änderung wird in Ihrer aktuellen CLI-Sitzung nicht sofort sichtbar, es sei denn, Sie laden das Bash-Profil mit folgendem Befehl: source ~/.bash_profile.

Diese Antwort ist ziemlich nahe an Antworten, die ich zu anderen nicht identischen, nicht doppelten Fragen (d. H. Nicht zu pipenv bezogen) gepostet habe, die jedoch dieselbe Lösung erfordern.

An den Moderator: Mit Respekt; Meine vorherige Antwort wurde aus diesem Grund gelöscht, aber ich finde, das war ein bisschen dumm, denn diese Antwort trifft fast immer dann zu, wenn der Fehler "Problem mit dem Gebietsschema" ist ... aber es gibt verschiedene Situationen, Sprachen und Umgebungen, die auslösen könnten dieser fehler.

Daher macht es A) keinen Sinn, die Fragen als Duplikate zu kennzeichnen, und B) macht auch keinen Sinn, die Antwort anzupassen, da die Lösung sehr einfach ist, in jedem Fall gleich ist und nicht von der Ornamentierung profitiert.

0
geoidesic

Ubuntu:

$ Sudo vi /etc/default/locale

Fügen Sie unterhalb der Einstellung am Ende der Datei hinzu.

LC_ALL = en_US.UTF-8

0
saneryee