Pelikan 3.3 Pelikan-Schnellstartfehler "ValueError: unbekanntes Gebietsschema: UTF-8"


154

Als ich versuchte, pelican3.3 zu verwenden, tippte ich die Empfehlung "pelican-quickstart" ein, einige Fehler wurden angezeigt.

Das sind die Fehler:

(PelicanEnv)59-127-113-90:myblog Richo$ pelican-quickstart
Traceback (most recent call last):
  File "/Users/Richo/Dropbox/Github/PelicanEnv/bin/pelican-quickstart", line 9, in <module>
    load_entry_point('pelican==3.3', 'console_scripts', 'pelican-quickstart')()
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 378, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 2566, in load_entry_point
    return ep.load()
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pkg_resources.py", line 2260, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/__init__.py", line 16, in <module>
    from pelican.generators import (ArticlesGenerator, PagesGenerator,
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/generators.py", line 20, in <module>
    from pelican.readers import Readers
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/pelican/readers.py", line 11, in <module>
    import docutils.core
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/core.py", line 20, in <module>
    from docutils import frontend, io, utils, readers, writers
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/frontend.py", line 41, in <module>
    import docutils.utils
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/utils/__init__.py", line 20, in <module>
    import docutils.io
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/io.py", line 18, in <module>
    from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/site-packages/docutils/utils/error_reporting.py", line 47, in <module>
    locale_encoding = locale.getlocale()[1] or locale.getdefaultlocale()[1]
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/locale.py", line 513, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/Richo/Dropbox/Github/PelicanEnv/lib/python2.7/locale.py", line 445, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

Mein Betriebssystem ist OS X Mavericks.


hatte das gleiche Problem bei der Verwendung von Kivy, auf Außenseitern
Ciasto Piekarz

Antworten:


456

Sie können eine hier oder hier veröffentlichte Lösung ausprobieren . Fügen Sie Ihrem ~ / .bash_profile grundsätzlich einige Zeilen hinzu:

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

Es gibt einen hervorragenden Fehlerbericht zu diesem Problem. Es scheint, dass Python einige Annahmen über das Format von Gebietsschemanamen trifft, die nicht allgemein gültig sind. Das explizite Festlegen dieser Umgebungsvariablen ist im Grunde nur eine Problemumgehung für diesen Fehler.

[Bearbeiten:] Wie @asmeurer richtig hervorhebt, geht der obige Fix von Englisch und den USA aus. Sie sollten Ihr bevorzugtes Gebietsschema wirklich aus der Liste von auswählen locale -a(im Allgemeinen eines, das mit endet UTF-8).


Ich hatte den PC abmelden / anmelden. Danke für alles.
Jose Carlos Ramos Carmenates

8
Dies löste das Problem auch für mich mit Anaconda unter MAC OSX in Fischschale. set -x LC_ALL de_US.UTF-8 set -x LANGen_US.UTF-8
andershqst

2
Es hat funktioniert, aber kann jemand erklären, warum wir es tun sollten?
Jblixr

6
Hier ist ein echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bashrc && source ~/.bashrc
Einzeiler

2
Dieser Fix ist nur dann korrekt, wenn Sie Englisch sprechen und in den USA leben (was bei Personen, die dieses Problem sehen, normalerweise nicht der Fall ist). Die eigentliche Lösung besteht darin LANG , die richtige Zeichenfolge für Ihr Gebietsschema festzulegen (Sie können sie alle auflisten locale -a) und im Allgemeinen diejenige zu verwenden, die mit endet UTF-8.
Asmeurer

9

Gerrats Antwort funktioniert, und ich glaube, wir sollten erwähnen, dass Sie, wenn Sie etwas Ähnliches verwenden zsh, ~/.zshrcanstelle von ~/.bash_profileoder Zeilen hinzufügen sollten~/.bash_rc


9

Die Antworten im Obergeschoss waren schnell großartig! Aber ich glaube, Leute wie ich, die faul sind, möchten die globale Umgebung ändern, falls sie sich nie wieder ändern, während sie zu einem anderen Login-Benutzer wechseln. Also müssen wir die Datei wie folgt ändern:

sudo vi /etc/profile or sudo vi /etc/bashrc

Fügen Sie dann die beiden Zeilen in den folgenden Dateien hinzu

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

Denken Sie daran, verpassen Sie keinen von ihnen, es funktioniert nicht für mich, nur $ LANG oder $ LC_ALL. Führen Sie danach den Befehl aus, um die Umgebung zu aktivieren.

sudo source /etc/profile 
sudo source /etc/bashrc
source ~/.bash_profile 
source ~/.zshrc

Wieder können faule Leute wie ich in einem Zeilenbefehl fertig werden.

echo -e "export LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8" >> ~/.bash_profile && source ~/.bash_profile

3

Ich poste meine Antwort von dieser Frage hier erneut, da sie als Duplikat dieser Frage markiert wurde und die akzeptierte Antwort auf diese Frage in vielerlei Hinsicht falsch ist.

Dies ist ein Fehler in der OS X Terminal-App, der nur in bestimmten Ländereinstellungen (Länder- / Sprachkombinationen) angezeigt wird. Öffnen Sie das Terminal in / Applications / Utilities und deaktivieren Sie das Kontrollkästchen "Gebietsschema-Umgebungsvariablen beim Start festlegen".

Geben Sie hier die Bildbeschreibung ein

Dadurch wird Ihre LANGUmgebungsvariable leer. Dies kann dazu führen, dass die Verwendung des Terminals zu falschen Einstellungen für Ihr Gebietsschema führt. Der Befehl locale im Terminal teilt Ihnen mit, welche Einstellungen verwendet werden. Um die richtige Sprache zu verwenden, fügen Sie Ihrem Bash-Profil (normalerweise ~/.profile) eine Zeile hinzu.

export LANG=your-lang

Ersetzen Sie your-langdurch den richtigen Gebietsschemaspezifizierer für Ihre Sprache. Der Befehl locale -azeigt Ihnen alle Bezeichner. Der Sprachcode für US-Englisch lautet beispielsweise en_US.UTF-8. Das Gebietsschema beeinflusst, welche Übersetzungen verwendet werden, wenn sie verfügbar sind, und wie Datumsangaben, Währungen und Dezimalstellen formatiert werden.

Beachten Sie, dass dieses Bild und der Inhalt von http://conda.pydata.org/docs/troubleshooting.html#unknown-locale stammen (ich bin auch der ursprüngliche Autor dieser Seite).


2

Keine der hier genannten Lösungen funktionierte für mich beim Ausführen eines Python 3.7-Projekts in einer lokalen App-Engine-Umgebung.

Obwohl ich das Gebietsschema über die Befehlszeile abrufen konnte:

python3 -c 'import locale; print(locale.getdefaultlocale());'
('en_US', 'UTF-8')  

Dieses Gebietsschema konnte in der App-Engine-Umgebung nicht gefunden werden:

File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/locale.py", line 568, in getdefaultlocale
    return _parse_localename(localename)
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/locale.py", line 495, in _parse_localename
    raise ValueError('unknown locale: %s' % localename)
ValueError: unknown locale: UTF-8

Also musste ich explizit env_variablesin meiner app.yaml Datei setzen:

env_variables:
  LC_ALL: "en_US:UTF_8"
  LC_CTYPE: "en_US:UTF_8"

Und das hat den Fehler behoben.


1

Aus irgendeinem Grund brauchte ich auch:

export LC_CTYPE=en_US.UTF-8

Aus irgendeinem Grund hast du die Antwort bekommen, nach der ich gesucht habe ... es sind ungefähr 2 Stunden vergangen. Vielen Dank!
Kiwad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.