You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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环境变量:

  1. 终端执行locale -a,确认de_DE.utf8确实存在
  2. 在Jupyter中检查当前环境变量:
import os
print(os.environ.get('LANG'))
  1. 若输出不是de_DE.utf8,可先设置环境变量再初始化locale:
import os
os.environ['LANG'] = 'de_DE.utf8'
import locale
# 空字符串表示使用系统默认locale
locale.setlocale(locale.LC_ALL, '')

内容的提问来源于stack exchange,提问作者withoutcake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:48:28