Warum erhalte ich den folgenden Fehler, wenn ich dies in Python mache:
>>> import locale
>>> print str( locale.getlocale() )
(None, None)
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/locale.py", line 531, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Dies funktioniert auch mit anderen Gebietsschemas wie fr oder nl. Ich benutze Ubuntu 11.04.
Update: Folgendes hat nichts gebracht:
dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
python
locale
ubuntu-11.04
toom
quelle
quelle
de_DE
Liste inlocale -a
? Wenn nicht, müssen Sie es installieren .locale.setlocale(locale.LC_ALL, 'de_DE')
ist falsch. Du brauchstlocale.setlocale(locale.LC_ALL, 'de_DE.utf8')
.locale.setlocale(locale.LC_ALL, locale.locale_aliases['de_DE'])
.Antworten:
Führen Sie die folgenden Befehle aus
Es wird dies lösen.
Stellen Sie sicher, dass der
.UTF-8
Teil mit der tatsächlichen Syntax übereinstimmt, die in der Ausgabe vonlocale -a
z.utf8
. B. auf einigen Systemen enthalten ist.quelle
export LC_ALL="en_US.UTF-8"
gescheitert mit-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
Was funktionierte war dies zu tun:export LC_ALL=C
Laut diesem Link wurde es durch Eingabe dieses Befehls gelöst:
quelle
LC_ALL
auf den Wert'C'
- aber warum sollte das funktionieren?Sie haben wahrscheinlich kein
de_DE
Gebietsschema verfügbar.Mit dem
locale -a
Befehl können Sie eine Liste der verfügbaren Gebietsschemas anzeigen . Zum Beispiel auf meinem Computer:Beachten Sie, dass Sie, wenn Sie das Gebietsschema
it_IT
festlegen möchten, auch Folgendes angeben müssen.utf8
:So installieren Sie ein neues Gebietsschema:
Wo
id
ist der Sprachcode (von hier übernommen )Nachdem Sie das Gebietsschema installiert haben, sollten Sie den Ratschlägen von Julien Palard folgen und die Gebietsschemas neu konfigurieren mit:
quelle
Eine der obigen Antworten bietet die Lösung:
Das Problem mit der obigen Lösung ist, dass es auf der Linux-Shell durchgeführt werden muss. Wenn Sie jedoch Ihren Code für die Arbeit auf dem Clientcomputer bereitstellen, ist dies ein schlechter Ansatz. Ich habe auch versucht, die obigen Befehle mit os.system () auszuführen, aber es funktioniert immer noch nicht.
Lösung, die für mich funktioniert hat, ist
quelle
Eine dauerhaftere Lösung wäre, die fehlenden Werte in der durch den Befehl angezeigten Ausgabe zu füllen:
locale
Ausgabe von
locale
ist:Um die fehlenden Werte zu füllen, bearbeiten Sie ~ / .bashrc:
Fügen Sie nach dem obigen Befehl die folgenden Zeilen hinzu (nehmen Sie an, dass en_US.UTF-8 Ihre Sprache sein soll):
Wenn diese Datei ReadOnly ist, müssen Sie die von The GeekyBoy genannten Schritte ausführen . Die Antwort von Dr. Beco in Superuser enthält Details zum Speichern schreibgeschützter Dateien.
Nach dem Speichern der Datei gehen Sie wie folgt vor:
Jetzt stehen Sie nicht mehr vor dem gleichen Problem.
quelle
Wenn Sie sich in einem Debian (oder einer Debian-Gabel) befinden, können Sie Gebietsschemas hinzufügen, indem Sie:
quelle
dpkg-reconfigure locales
bringen Sie eine lokale Wahl Menü wie diese: vpser.net/uploads/2013/01/dpkg-reconfigure-locales-1.jpg ?Unter Arch Linux konnte ich dies durch Ausführen beheben
sudo locale-gen
quelle
Für die Aufzeichnung hatte ich das gleiche Problem, aber keine der Lösungen funktionierte. Ich hatte meinen Computer aktualisiert und meinen PC migriert. Ich hatte ein gemischtes Gebietsschema Englisch und Spanisch:
Bei meiner neuen Debian-Installation habe ich jedoch nur Englisch als Gebietsschema ausgewählt. Was schließlich funktionierte, war die Neukonfiguration des Gebietsschemapakets, um auch Spanisch hinzuzufügen und zu generieren.
quelle
Öffnen Sie einfach die .bashrc-Datei und fügen Sie diese hinzu
und geben Sie dann source .bashrc in terminal ein.
quelle
Ihr Fehler besagt eindeutig, dass Sie versuchen, das Gebietsschema zu verwenden. Etwas war nicht vorhanden.
locale.Error: Nicht unterstützte Gebietsschemaeinstellung
Verwenden Sie, um die verfügbaren Einstellungen zu überprüfen
locale -a
so können Sie eine unter verwenden,
zum
de_DE
Diese Datei kann entweder manuell angepasst oder mit dem Tool update-locale aktualisiert werden.
quelle
locale
, um zu ermitteln, welches Gebietsschema verwendet wird. Sowie:/etc/locale-gen
Datei nach der Liste der aufgelisteten Gebietsschemas . Kommentar zu gebrauchtenlocale-gen
, um neu hinzugefügte Gebietsschemas zu generierenquelle
Meiner Meinung nach ist der einfachste Weg, das lokale Gebietsschema in Python {, 3} einzurichten:
Dann funktioniert das Gebietsschema nur, wenn Sie sich in einer anständigen Linux-Distribution befinden und auch mit Binärdistributionen der anderen Betriebssysteme funktionieren sollten (oder das ist meiner Meinung nach ein Fehler).
quelle
Legen Sie es
Dockerfile
oben in dieENV
.quelle
locale
im Terminal laufen, erhalten Sie `LANG = en_US.UTF-8 und ein anderes Gebietsschema? stackoverflow.com/questions/36394101/…Dieser Fehler kann auftreten, wenn Sie gerade ein neues Gebietsschema hinzugefügt haben. Sie müssen die interaktive Python-Shell (
quit(
) undpython
) neu starten , um Zugriff darauf zu erhalten.quelle
Wenn ich Sie wäre, würde ich BABEL verwenden: http://babel.pocoo.org/en/latest/index.html
Ich habe hier mit Docker das gleiche Problem. Ich habe jeden einzelnen Schritt ausprobiert und nicht gut funktioniert. Es wurde immer ein Gebietsschemafehler angezeigt. Deshalb habe ich mich für BABEL entschieden, und alles hat gut funktioniert.
quelle
Beim Versuch, Python dazu zu bringen , Namen in einem bestimmten Gebietsschema auszuspucken, landete ich hier mit demselben Problem.
Als ich die Antwort verfolgte, wurden die Dinge ein wenig mystisch, wie ich finde.
Ich habe diesen Python-Code gefunden.
Und
locale.setlocale(locale.LC_TIME, 'en_DK.UTF-8')
funktioniert tatsächlichAnhand der hier aufgeführten Tipps habe ich weiter getestet, um festzustellen, was mit Python-Code verfügbar ist
was ergibt
Davon funktioniert nur oben! Aber das
en_DK.UTF-8
ist nicht in dieser Liste, obwohl es funktioniert!?!? Was?? Und die von Python generierte Gebietsschemaliste enthält viele Kombinationen von da und DK, nach denen ich suche, aber auch hier kein UTF-8 für da / DK ...Ich bin auf einer Point Linux-Distribution (Debian-basiert) und
locale
sage hier unter anderemLC_TIME="en_DK.UTF-8"
, was ich weiß, funktioniert, aber nicht das Gebietsschema, das ich brauche.locale -a
sagtAlso muss auf jeden Fall ein anderes Gebietsschema installiert werden , was ich durch Bearbeiten
/etc/locale.gen
, Kommentieren der benötigten Zeileda_DK.UTF-8 UTF-8
und Ausführen des Befehls getan habelocale-gen
Funktioniert jetzt
locale.setlocale(locale.LC_TIME, 'da_DK.UTF-8')
auch und ich kann meine lokalisierten Tages- und Monatsnamen abrufen.Meine Schlussfolgerung:
Python: locale.locale_alias ist überhaupt nicht hilfreich, um verfügbare Gebietsschemas zu finden !!!
Linux: Es ist ziemlich einfach, eine Gebietsschemaliste abzurufen und ein neues Gebietsschema zu installieren. Viel Hilfe zur Verfügung.
Windows: Ich habe ein wenig nachgeforscht, aber nichts schlüssiges. Es gibt zwar Beiträge, die zu Antworten führen, aber ich habe nicht den Drang verspürt, sie weiterzuverfolgen.
quelle
Wenn ich das richtig verstehe, ist die Hauptfehlerquelle hier die genaue Syntax des Gebietsschemas. Zumal es sich zwischen den Distributionen zu unterscheiden scheint. Ich habe hier in verschiedenen Antworten / Kommentaren erwähnt gesehen:
Auch wenn dies für einen Menschen offensichtlich dasselbe ist, gilt dies nicht für Ihren deterministischen Standardalgorithmus.
Sie werden also wahrscheinlich etwas in der Art von:
quelle
Python sucht nach .UFT-8, aber Sie haben wahrscheinlich .utf8 versucht, die .UFT-8-Pakete mit sudo dpkg-recfigure locales zu installieren
quelle
Stellen Sie zunächst sicher, dass Sie das Sprachpaket installiert haben, indem Sie Folgendes tun:
quelle