python - una - fijar ejes matplotlib
¿Cuál es la forma correcta de establecer la configuración regional de Python en Windows? (6)
Estoy intentando ordenar una lista de cadenas de manera local. He utilizado la biblioteca de Babel para otras tareas relacionadas con i18n, pero no es compatible con la clasificación. El módulo locale
de Python proporciona una función strcoll
, pero requiere que la configuración regional del proceso se establezca en la que yo quiero trabajar. Es un poco doloroso, pero puedo vivir con eso.
El problema es que parece que realmente no puedo configurar la configuración regional. La documentation del módulo de locale
proporciona este ejemplo:
import locale
locale.setlocale(locale.LC_ALL, ''de_DE'')
Cuando corro eso, obtengo esto:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:/Python26/Lib/locale.py", line 494, in setlocale
locale.Error: unsupported locale setting
¿Qué estoy haciendo mal?
Ubuntu
En Ubuntu puede tener este problema porque no tiene ese local instalado en su sistema.
Desde el shell prueba a:
$> locale -a
y compruebe si encuentra la configuración regional que le interesa. De lo contrario, debe instalarla:
$> sudo apt-get install language-pack-XXX
donde XXX es su idioma (en mi caso "xxx = it", localidad italiana) Luego ejecute dpkg-reconfigure
:
$> sudo dpkg-reconfigure locales
Después de eso, inténtalo de nuevo en tu shell de python:
>>> import locale
>>> locale.setlocale(locale.LC_ALL,''it_IT.UTF-8'')
(Esto es para locale italiano, que era lo que necesitaba)
De los documentos de locale.setlocale:
locale.setlocale(category, locale=None):
"""
Set the locale for the given category. The locale can be
a string, an iterable of two strings (language code and encoding),
or None.
""""
Bajo Linux (especialmente Ubuntu) puedes usar
locale.setlocale(locale.LC_ALL, ''de_DE.UTF-8'')
o
locale.setlocale(locale.LC_ALL, (''de'', ''utf-8''))
Obtendrá el mismo error si la configuración regional no está instalada en el sistema. Por lo tanto, asegúrese de tener instalada la configuración regional en su sistema:
$ locale -a # to list the currently installed locales
$ (sudo) locale-gen de_DE.UTF-8 # to install new locale
Esta es la única forma de hacerlo en Windows (ejemplo para la configuración regional alemana):
import locale
locale.setlocale(category=locale.LC_ALL,
locale="German") # Not locale="de_DE"
No debe pasar una configuración regional explícita a setlocale, es incorrecto. Déjalo saber del medio ambiente. Tienes que pasarlo una cadena vacía
import locale
locale.setlocale(locale.LC_ALL, '''')
Parece que estás usando Windows. Las cadenas locales son diferentes allí. Eche un vistazo más preciso al documento:
locale.setlocale(locale.LC_ALL, ''de_DE'') # use German locale; name might vary with platform
En Windows, creo que sería algo así como:
locale.setlocale(locale.LC_ALL, ''deu_deu'')
MSDN tiene una lista de cadenas de idioma y de cadenas de país / región
Sé que esto se ha pedido hace años, pero pensé en intentar agregar lo que descubrí, usando Python 3.6 en Windows:
import locale
for x in locale.windows_locale.values():
print(x.replace(''_'',''-''))
Intenté algunas y también parece ser una forma de averiguar qué hay disponible en Windows.
Y luego simplemente configura la configuración regional:
locale.setlocale(locale.LC_ALL, any_item_of_the_printed_strings)