我不确定这是一个寻求这个错误帮助的好地方。不知怎的,我似乎没有在我的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
获得英语语言包。但是抱怨抱怨这个包不存在。我怎么得到这个该死的地方?
答案 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个不同的平台仅使用标准模块正确设置区域设置。