缺少python所需的en_US语言环境

时间:2013-08-20 02:10:25

标签: python debian locale apt

我不确定这是一个寻求这个错误帮助的好地方。不知怎的,我似乎没有在我的Debian Linux系统上有一个语言环境。基本上,当我试图运行的python程序执行行locale.setlocale(locale.LC_ALL, 'en_US')时,我意识到了这一点。我收到错误:

  

追踪(最近的呼叫最后):
    文件“”,第1行,在中     文件“runserver.py”,第4行,在中       site = TarbellSite(os.path.dirname(os.path.abspath( file )))
    在 init 中输入文件“/home/brian/.virtualenvs/tarbell/src/flask-tarbell/tarbell/app.py”,第36行       self.projects = self.load_projects()
    文件“/home/brian/.virtualenvs/tarbell/src/flask-tarbell/tarbell/app.py”,第59行,在load_projects中       project = imp.load_module(名称,文件名,路径名,描述)
    文件“/home/brian/Code/contrib/tarbell/base/config.py”,第28行,中
      locale.setlocale(locale.LC_ALL,'en_US')
    在setlocale中输入文件“/home/brian/.virtualenvs/tarbell/lib/python2.7/locale.py”,第547行       return _setlocale(category,locale)
  locale.Error:不支持的区域设置

然而,研究关于SO的相关现存问题,如this一,告诉我运行locale -a,产生:

  

Ç
  C.UTF-8
  en_US.utf8
  POSIX

所以,看起来美国英语IS在我系统的语言环境中。我究竟做错了什么?我遇到了其他各种路障。根据互联网上的很多地方sudo apt-get install language-pack-en获得英语语言包。但是抱怨抱怨这个包不存在。我怎么得到这个该死的地方?

3 个答案:

答案 0 :(得分:4)

尝试添加'utf8'位;

import locale
locale.getlocale()
>>> (None, None)
locale.setlocale(locale.LC_ALL, 'en_US.utf8')
>>> 'en_US.utf8'
locale.getlocale()
>>> ('en_US', 'UTF-8')

答案 1 :(得分:0)

这是对我有用的解决方案:

我在OS X 10.11.6(15G19009)上使用iMac Python版本3.5.2

我试过了:

locale.setlocale(locale.LC_ALL,'') <-- this line worked fine on windows 7

MAC的解决方案是指定英语:

locale.setlocale(locale.LC_ALL,'EN_US') <-- this line produced the desired results

这两行必须是os独立的。在进一步测试之后,这是一个跨平台的解决方案,您只需调用platform.platform并进行必要的更改即可将其调整到任何平台。

import locale
import platform
if (platform.platform(aliased = 0, terse = 0)=='Darwin-15.6.0-x86_64-i386-64bit'):
    locale.setlocale( locale.LC_ALL, 'EN_US' )
else:
    locale.setlocale(locale.LC_ALL,'')

答案 2 :(得分:0)

这是一个更有说服力的答案:

import platform
import locale
system = platform.system() ##<-- to get the platform you are using.
if (system == 'Darwin'): ##<-- Darwin has Different naming
    locale.setlocale(locale.LC_ALL, 'EN_US') ##<-- Default us english on Darwin
else: ##<-- if system isn't Darwin 
    locale.setlocale(locale.LC_ALL,'') ##<-- this works for Windows and Debian
## operations like locale.currency ect......

此代码允许进行多平台开发,此帖中显示的错误是区域设置的不正确设置。此答案允许至少3个不同的平台仅使用标准模块正确设置区域设置。