Frage

Deshalb habe ich heute ein Upgrade auf Bazaar 2.0.2 durchgeführt und diese Nachricht erhalten (ich bin übrigens auf Snow Leopard):

bzr: warning: unknown locale: UTF-8
  Could not determine what text encoding to use.
  This error usually means your Python interpreter
  doesn't support the locale set by $LANG (en_US.UTF-8)
  Continuing with ascii encoding.

sehr seltsam, da mein LANG eigentlich leer ist.Ähnliches passiert, wenn ich versuche, am Locale-Modul herumzubasteln

Python 2.5.4 (r254:67916, Nov 30 2009, 14:09:22) 
[GCC 4.3.4] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/sbo/runtimes/lib/python2.5/locale.py", line 443, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/sbo/runtimes/lib/python2.5/locale.py", line 375, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

Der Export von LANG hilft nicht

sbo@dhcp-045:~ $ export LANG=en_US.UTF-8
sbo@dhcp-045:~ $ bzr
bzr: warning: unknown locale: UTF-8
  Could not determine what text encoding to use.
  This error usually means your Python interpreter
  doesn't support the locale set by $LANG (en_US.UTF-8)
  Continuing with ascii encoding.

Dies löste jedoch das Problem

sbo@dhcp-045:~ $ export LANG=en_US.UTF-8
sbo@dhcp-045:~ $ export LC_ALL=en_US.UTF-8

Python 2.5.4 (r254:67916, Nov 30 2009, 14:09:22) 
[GCC 4.3.4] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
('en_US', 'UTF8')

Könnten Sie bitte erklären, was hier vor sich geht, damit Sie es besser googeln können?

War es hilfreich?

Lösung

UPDATE 2016:Es stellt sich heraus, dass Das ist ein Python-Fehler seit mindestens 2013, sehr wahrscheinlich auch früher, und besteht darin, dass Python nicht gut auf Nicht-GNU-Gebietsschemas reagiert – wie sie in Mac OS X und den BSDs zu finden sind.Der Fehler ist seit September 2016 noch offen und betrifft jede Python-Version.


Wenn es nein gäbe LANG Wenn Sie die Umgebungsvariable festgelegt haben, stehen die Chancen gut, dass Sie entweder eine hatten LC_CTYPE (die Schlüsselvariable) oder LC_ALL (die überschreibt, wenn sie gesetzt ist) Umgebungsvariable auf gesetzt UTF-8, was kein gültiges OS X-Gebietsschema ist.Es ist leicht genug, es mit dem von Apple gelieferten Gerät zu reproduzieren /usr/bin/python oder mit einem benutzerdefinierten Python, wie in Ihrem Fall, das mit dem 10.6 SDK (wahrscheinlich auch dem 10.5 SDK) erstellt wurde.Mit einem python.org-Python können Sie es nicht auf diese Weise reproduzieren.Sie werden derzeit mit dem 10.4 SDK erstellt, wobei sich die Gebietsschema-APIs anders verhalten.

$ unset LANG
$ env | grep LC_
$ export LC_CTYPE="UTF-8"
$ /usr/bin/python  # Apple-supplied python
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale ; locale.getdefaultlocale()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 459, in getdefaultlocale
    return _parse_localename(localename)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 391, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8
^D
$ /usr/local/bin/python2.6   # python.org python
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale ; locale.getdefaultlocale()
(None, 'mac-roman')
>>> 

BEARBEITEN:

Möglicherweise gibt es noch ein weiteres Teil des Puzzles.Ein kurzer Blick auf die bzr 2.0.1, die ich installiert habe, weist darauf hin, dass die von Ihnen zitierte Meldung nur angezeigt werden sollte, wenn locale.getpreferredencoding() wirft a locale.Error.Eine Möglichkeit, die passieren kann, ist, wenn die Python _locale.so Die C-Erweiterung kann nicht geladen werden und das kann passieren, wenn es Berechtigungsprobleme gibt.Derzeit ist beispielsweise bekannt, dass MacPorts über diese verfügen Probleme beim Festlegen von Berechtigungen, wenn Sie eine benutzerdefinierte umask haben;Ich selbst habe mich an diesem Thema geärgert.Überprüfen Sie die Berechtigungen von _locale.so in der Python lib/python2.5/lib-dynload Verzeichnis und stellen Sie sicher, dass dies der Fall ist 755.Der vollständige Pfad für MacPorts sollte sein:

/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/

Andere Tipps

stand ich das gleiche Problem. Als ich locale lief, bemerkte ich, dass die LANG und LC_ALL ungesetzt waren. So fixierte ich dies durch die folgenden Zeilen in der .bash_profile Datei hinzufügen:

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

Dann lief ich einfach:

source ~/.bash_profile 

Und dieses Problem wurde behoben danach auf meinem Mac.

Es ist ein Mac OS X Problem. Um Ihre lokalen Einstellungen, führte locale im Terminal zu sehen. locale -a sollten alle locales aufzulisten, die Sie festgelegt haben (die Sie als Argument LC_ALL verwenden).

Beachten Sie, dass LC_ALL und andere LC_* Variablen Vorrang vor LANG nehmen, wenn definiert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top