在Windows上设置Python的语言环境的正确方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows上设置Python的语言环境的正确方法是什么?相关的知识,希望对你有一定的参考价值。

我正在尝试以区域设置感知的方式对字符串列表进行排序。我已经将Babel库用于其他与i18n相关的任务,但它不支持排序。 Python的locale模块提供了strcoll函数,但需要将进程的语言环境设置为我想要使用的语言环境。有点痛,但我可以忍受它。

问题是我似乎无法实际设置区域设置。 documentation模块的locale给出了这个例子:

import locale
locale.setlocale(locale.LC_ALL, 'de_DE')

当我运行时,我得到了这个:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:Python26Liblocale.py", line 494, in setlocale
locale.Error: unsupported locale setting

我究竟做错了什么?

答案

看来你正在使用Windows。区域设置字符串在那里是不同的。更准确地看一下doc:

locale.setlocale(locale.LC_ALL, 'de_DE') # use German locale; name might vary with platform

在Windows上,我认为它会是这样的:

locale.setlocale(locale.LC_ALL, 'deu_deu')

MSDN列出了language stringscountry/region strings

另一答案

您不应该将显式语言环境传递给setlocale,这是错误的。让它从环境中找出来。你必须传递一个空字符串

import locale
locale.setlocale(locale.LC_ALL, '')
另一答案

这是在Windows上执行此操作的唯一方法(德语区域设置的示例):

import locale

locale.setlocale(category=locale.LC_ALL,
                 locale="German")  # Not locale="de_DE"
另一答案

Ubuntu

在Ubuntu上,您可能遇到此问题,因为您的系统上没有安装本地。

从shell尝试:

$> locale -a

并检查您是否找到了您感兴趣的区域设置。否则您必须安装它:

$> sudo apt-get install language-pack-XXX

哪里XXX是你的语言(在我的情况下“xxx = it”,意大利语语言环境)然后运行dpkg-reconfigure

$> sudo dpkg-reconfigure locales

之后再次尝试在python shell中:

>>> import locale
>>> locale.setlocale(locale.LC_ALL,'it_IT.UTF-8')

(这是意大利语语言环境,这是我需要的)

另一答案

我知道这已经在几年前被问过,但我想我会尝试在Windows上使用Python 3.6添加我发现的东西:

import locale
for x in locale.windows_locale.values():
    print(x.replace('_','-'))

我尝试了一些,这似乎也是一种查找,Windows上可用的方法。

很高兴知道:由于某些原因,这与当前稳定版本的Python的strptime()不兼容

然后你只需设置语言环境:

locale.setlocale(locale.LC_ALL, any_item_of_the_printed_strings)

另一答案

来自locale.setlocale docs:

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.
    """"

在Linux下(尤其是Ubuntu)你可以使用

locale.setlocale(locale.LC_ALL, 'de_DE.UTF-8')

要么

locale.setlocale(locale.LC_ALL, ('de', 'utf-8'))

如果系统上未安装语言环境,您将收到相同的错误。因此,请确保您的系统上安装了语言环境:

$ locale -a # to list the currently installed locales
$ (sudo) locale-gen de_DE.UTF-8 # to install new locale

以上是关于在Windows上设置Python的语言环境的正确方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

findspark.init() 失败 - 无法正确设置 SPARK_HOME 环境变量

windows上python的下载安装以及环境变量的设置

windows下配置python环境变量

Heroku上的Python语言环境设置

Python的安装

如何正确设置 Informix GLS 及 CSDK 语言环境