Domanda

Quindi oggi ho effettuato l'aggiornamento a Bazaar 2.0.2 e ho iniziato a ricevere questo messaggio (sono su Snow Leopard, tra l'altro):

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.

molto strano, dato che il mio LANG è effettivamente vuoto.Una cosa simile accade quando provo ad armeggiare con il modulo locale

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

esportare LANG non aiuta

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.

Tuttavia, questo ha risolto il problema

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')

Potresti spiegare cosa sta succedendo qui, per una migliore googlabilità?

È stato utile?

Soluzione

AGGIORNAMENTO 2016:Si scopre che questo è un bug di Python almeno dal 2013, molto probabilmente anche prima, consistente nel fatto che Python non reagisce bene alle localizzazioni non GNU, come quelle trovate in Mac OS X e BSD.Il bug è ancora aperto a settembre 2016 e interessa ogni versione di Python.


Se non ci fosse LANG variabile d'ambiente impostata, è probabile che tu abbia un file LC_CTYPE (la variabile chiave) o LC_ALL (che sovrascrive se impostata) variabile di ambiente impostata su UTF-8, che non è una locale OS X valida.È abbastanza facile da riprodurre con quello fornito da Apple /usr/bin/python o con un Python personalizzato, come nel tuo caso, creato con l'SDK 10.6 (probabilmente anche l'SDK 10.5).Non sarai in grado di riprodurlo in questo modo con un pitone python.org;sono attualmente creati con l'SDK 10.4 in cui le API locali si comportano diversamente.

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

MODIFICARE:

Potrebbe esserci un altro pezzo del puzzle.Una rapida occhiata a bzr 2.0.1 Ho installato indica che il messaggio che citi dovrebbe apparire solo se locale.getpreferredencoding() solleva un locale.Error.Un modo in cui ciò può accadere è se il file python _locale.so L'estensione C non può essere caricata e ciò può accadere se ci sono problemi di autorizzazione su di essa.Ad esempio, attualmente è noto che MacPorts ha problemi nell'impostazione delle autorizzazioni se si dispone di una umask personalizzata;Anch'io sono stato scottato da questo problema.Controlla i permessi di _locale.so nel pitone lib/python2.5/lib-dynload directory e assicurati che lo sia 755.Il percorso completo per MacPorts dovrebbe essere:

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

Altri suggerimenti

Ho affrontato lo stesso problema.Quando correvo locale, ho notato che il LANG E LC_ALL erano non impostati.Quindi ho risolto questo problema aggiungendo le seguenti righe nel file .bash_profile file:

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

Poi ho semplicemente eseguito:

source ~/.bash_profile 

E questo problema è stato risolto successivamente sul mio Mac.

È un problema di Mac OS X.Per visualizzare le impostazioni locali, esegui locale nel terminale. locale -a dovrebbe elencare tutte le localizzazioni che hai definito (che puoi usare come argomento per LC_ALL).

Notare che LC_ALL e altro LC_* le variabili hanno la precedenza LANG quando definito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top