python - spanish - pip install django locale error unsupported locale setting
Python locale error extraño. ¿Qué está pasando aquí exactamente? (3)
Así que hoy actualicé a bazar 2.0.2 y comencé a recibir este mensaje (estoy en el leopardo de las nieves, por cierto):
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.
Muy extraño, ya que mi LANG está realmente vacío. Algo similar sucede cuando intento jugar con el módulo de configuración regional
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
exportar LANG no ayuda
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.
Sin embargo, esto solucionó el 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'')
¿Podría por favor explicar qué está pasando aquí, para una mejor googlabilidad?
ACTUALIZACIÓN 2016: Resulta que se trata de un error de Python desde al menos 2013, muy probablemente también antes, que consiste en que Python no reacciona bien a los entornos locales que no son GNU, como los que se encuentran en Mac OS X y los BSD. El error sigue abierto a partir de septiembre de 2016 y afecta a todas las versiones de Python.
Si no se estableció una variable de entorno LANG
, es probable que haya una variable de entorno LC_CTYPE
(la variable clave) o LC_ALL
(que anula si se establece) establecida en UTF-8
, que no es una configuración regional válida de OS X. Es lo suficientemente fácil de reproducir con el /usr/bin/python
suministrado por Apple o con un pitón personalizado, como en su caso, que se creó con el SDK 10.6 (probablemente también el SDK 10.5). No podrás reproducirlo de esa manera con python.org python; actualmente se crean con el SDK 10.4 donde las API de configuración regional se comportan de manera diferente.
$ 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'')
>>>
EDITAR:
Puede haber otra pieza para el rompecabezas. Un vistazo rápido al bzr
2.0.1 que he instalado indica que el mensaje que cita solo debería aparecer si locale.getpreferredencoding()
genera un locale.Error
. Una forma en que puede suceder es si la extensión python _locale.so
C no se puede cargar y eso puede suceder si hay problemas de permisos en ella. Por ejemplo, actualmente se sabe que MacPorts tiene problemas para establecer permisos si tiene una umask personalizada ; Yo mismo me he quemado por ese problema. Verifique los permisos de _locale.so
en el _locale.so
python lib/python2.5/lib-dynload
y asegúrese de que sea 755
. La ruta completa para MacPorts debería ser:
/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/
Es un problema de Mac OS X. Para ver la configuración regional, ejecute la locale
en el terminal. locale -a
debe enumerar todas las configuraciones regionales que ha definido (que puede usar como argumento para LC_ALL).
Observe que LC_ALL
y otras variables LC_*
tienen prioridad sobre LANG
cuando se definen.
Me enfrenté al mismo problema. Cuando ejecuté la locale
, noté que LANG
y LC_ALL
estaban configurados. Así que lo arreglé agregando las siguientes líneas en el archivo .bash_profile
:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
Entonces simplemente corrí:
source ~/.bash_profile
Y este problema se solucionó a partir de entonces en mi Mac.