[python] 파이썬 로케일 오류 : 지원되지 않는 로케일 설정

파이썬에서 이것을 할 때 왜 다음과 같은 오류가 발생합니까?

>>> import locale
>>> print str( locale.getlocale() )
(None, None)
>>> locale.setlocale(locale.LC_ALL, 'de_DE')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/locale.py", line 531, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

이것은 fr이나 nl과 같은 다른 로케일에서도 작동합니다. 우분투 11.04를 사용하고 있습니다.

업데이트 : 다음을 수행해도 아무런 효과가 없었습니다.

dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = (unset)
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory



답변

다음 명령을 실행

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

이 문제를 해결할 것입니다.

예 를 들어 일부 시스템 .UTF-8의 출력에서 ​​찾은 실제 구문 과 부품 을 일치 시켜야합니다 .locale -a.utf8


답변

이 링크 에 따르면 다음 명령을 입력하여 해결했습니다.

LC_ALL = C 내보내기


답변

de_DE사용 가능한 로캘 이 없을 수 있습니다.

locale -a명령을 사용하여 사용 가능한 로케일 목록을 볼 수 있습니다 . 예를 들어, 내 컴퓨터에서 :

$ locale -a
C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
it_CH.utf8
it_IT.utf8
POSIX

로케일을 설정 it_IT하려면 다음도 지정해야합니다 .utf8.

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'it_IT')   # error!
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/locale.py", line 539, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting
>>> locale.setlocale(locale.LC_ALL, 'it_IT.utf8')
'it_IT.utf8'

새 로케일을 설치하려면 다음을 수행하십시오.

sudo apt-get install language-pack-id

여기서 id언어 코드 (에서 가져 여기 )

로케일을 설치 한 후 Julien Palard 조언을 따라 다음을 사용하여 로케일을 재구성해야합니다.

sudo dpkg-reconfigure locales


답변

위의 답변 중 하나가 해결책을 제공합니다.

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

위의 솔루션의 문제점은 리눅스 쉘에서 수행해야한다는 것입니다. 그러나 클라이언트 시스템에서 작동하도록 코드를 제공하는 경우 이는 나쁜 접근 방식입니다. os.system ()을 사용하여 위의 명령을 실행하려고 시도했지만 여전히 작동하지 않습니다.

나를 위해 일한 해결책은

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


답변

보다 영구적 인 해결책은 명령으로 표시된 출력에서 ​​누락 된 값을 채우는 것입니다. locale

의 출력 locale은 다음과 같습니다.

 $ locale
LANG=en_US.utf8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC=es_ES.utf8
LC_TIME=es_ES.utf8
LC_COLLATE="en_US.utf8"
LC_MONETARY=es_ES.utf8
LC_MESSAGES="en_US.utf8"
LC_PAPER=es_ES.utf8
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT=es_ES.utf8
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

누락 된 값을 채우려면 ~ / .bashrc를 편집하십시오.

 $ vim ~/.bashrc

위 명령 뒤에 다음 행을 추가하십시오 (en_US.UTF-8을 사용자 언어로 지정하십시오).

export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"

이 파일이 읽기 전용 인 경우 The GeekyBoy에서 언급 한 단계를 따라야합니다 . Superuser에서 Dr Beco가 제공 한 답변 에는 읽기 전용 파일 저장과 관련된 세부 정보가 있습니다.

파일을 저장 한 후 다음을 수행하십시오.

$ source ~/.bashrc

이제 더 이상 같은 문제에 직면하지 않을 것입니다.


답변

데비안 (또는 데비안 포크) 인 경우 다음을 사용하여 로캘을 추가 할 수 있습니다.

dpkg-reconfigure locales


답변

아치 리눅스에서 나는 이것을 실행하여 이것을 고칠 수 있었다 sudo locale-gen