Ubuntu 22.04.3下已安装locale仍提示unsupported locale setting问题求助
解决Python locale.setlocale报错"unsupported locale setting"
问题场景
运行Linux Ubuntu 22.04.3系统,已确认de_DE.utf8 locale已安装,但在Jupyter Notebook中运行以下代码时报错:
import locale locale.setlocale(locale.LC_ALL,('de_DE.utf8','UTF-8')) print(locale.getlocale())
报错信息:
Error Traceback (most recent call last) Cell In[65], line 6 1 import locale 3 #locale.setlocale(locale.LC_ALL,('de_de','de_DE.ISO8859-1')) 4 5 #locale.setlocale(locale.LC_NUMERIC, 'de_DE.utf8') ----> 6 locale.setlocale(locale.LC_ALL,('de_DE.utf8','UTF-8')) 8 print(locale.getlocale()) File ~/anaconda3/lib/python3.11/locale.py:626, in setlocale(category, locale) 623 if locale and not isinstance(locale, _builtin_str): 624 # convert to string 625 locale = normalize(_build_localename(locale)) ---> 626 return _setlocale(category, locale) Error: unsupported locale setting
错误原因
传入setlocale的元组格式错误:
de_DE.utf8已经是完整的系统locale标识,包含语言和编码信息,无需额外传递编码参数- 若使用元组格式,正确规则是
(语言代码, 编码),而非(带编码的locale名, 编码)
解决方案
方案1:直接传递完整的locale字符串
直接使用系统识别的完整locale名称,这是最简便的方式:
import locale locale.setlocale(locale.LC_ALL, 'de_DE.utf8') print(locale.getlocale())
方案2:使用元组格式(语言代码+编码)
如果偏好元组传递方式,需拆分语言代码和编码,避免重复信息:
import locale locale.setlocale(locale.LC_ALL, ('de_DE', 'UTF-8')) print(locale.getlocale())
额外排查:Jupyter环境locale加载问题
若上述方案仍报错,可能是Jupyter未正确继承系统locale环境变量:
- 终端执行
locale -a,确认de_DE.utf8确实存在 - 在Jupyter中检查当前环境变量:
import os print(os.environ.get('LANG'))
- 若输出不是
de_DE.utf8,可先设置环境变量再初始化locale:
import os os.environ['LANG'] = 'de_DE.utf8' import locale # 空字符串表示使用系统默认locale locale.setlocale(locale.LC_ALL, '')
内容的提问来源于stack exchange,提问作者withoutcake
相关产品推荐
相关产品推荐

