파이썬 로케일 이상한 오류. 정확히 여기서 무슨 일이 일어나고 있습니까?

StackOverflow https://stackoverflow.com/questions/1830394

문제

그래서 오늘 나는 Bazaar 2.0.2로 업그레이드 했고이 메시지를 받기 시작했습니다 (저는 Snow Leopard, BTW에 있습니다).

bzr: warning: unknown locale: UTF-8
  Could not determine what text encoding to use.
  This error usually means your Python interpreter
  doesn't support the locale set by $LANG (en_US.UTF-8)
  Continuing with ascii encoding.

내 랑이 실제로 비어 있기 때문에 매우 이상합니다. 로케일 모듈을 땜질하려고 할 때도 비슷한 일이 발생합니다.

Python 2.5.4 (r254:67916, Nov 30 2009, 14:09:22) 
[GCC 4.3.4] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/sbo/runtimes/lib/python2.5/locale.py", line 443, in getdefaultlocale
    return _parse_localename(localename)
  File "/Users/sbo/runtimes/lib/python2.5/locale.py", line 375, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

Lang을 수출하는 것은 도움이되지 않습니다

sbo@dhcp-045:~ $ export LANG=en_US.UTF-8
sbo@dhcp-045:~ $ bzr
bzr: warning: unknown locale: UTF-8
  Could not determine what text encoding to use.
  This error usually means your Python interpreter
  doesn't support the locale set by $LANG (en_US.UTF-8)
  Continuing with ascii encoding.

그러나 이것은 문제를 해결했습니다

sbo@dhcp-045:~ $ export LANG=en_US.UTF-8
sbo@dhcp-045:~ $ export LC_ALL=en_US.UTF-8

Python 2.5.4 (r254:67916, Nov 30 2009, 14:09:22) 
[GCC 4.3.4] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.getdefaultlocale()
('en_US', 'UTF8')

더 나은 구글 성을 위해 여기서 무슨 일이 일어나고 있는지 설명해 주시겠습니까?

도움이 되었습니까?

해결책

2016 업데이트 : 그 결과가 밝혀졌습니다 이것은 파이썬 버그입니다 Mac OS X 및 BSDS에서 발견 된 것과 같이, Python으로 구성된 Python으로 구성된 2013 년 이후, 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 아마도 일찍 일찍입니다. 버그는 2016 년 9 월 현재 여전히 열려 있으며 모든 파이썬 버전에 영향을 미칩니다.


없다면 LANG 환경 변수 세트, 기회가 있었을 가능성이 있습니다. LC_CTYPE (키 변수) 또는 LC_ALL (설정된 경우 재정의) 환경 변수 설정 UTF-8, 유효한 OS X 로케일이 아닙니다. 사과 공급으로 재생산하기가 쉽습니다 /usr/bin/python 또는 귀하의 경우와 같이 사용자 정의 파이썬으로 10.6 SDK (아마도 10.5 SDK)로 구축되었습니다. Python.org Python으로 그런 식으로 재현 할 수 없습니다. 그들은 현재 로케일 API가 다르게 행동하는 10.4 SDK로 제작되었습니다.

$ unset LANG
$ env | grep LC_
$ export LC_CTYPE="UTF-8"
$ /usr/bin/python  # Apple-supplied python
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale ; locale.getdefaultlocale()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 459, in getdefaultlocale
    return _parse_localename(localename)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/locale.py", line 391, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8
^D
$ /usr/local/bin/python2.6   # python.org python
Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale ; locale.getdefaultlocale()
(None, 'mac-roman')
>>> 

편집하다:

퍼즐에 또 다른 조각이있을 수 있습니다. 간단한 모습 bzr 2.0.1 설치 한 메시지는 귀하가 인용 한 메시지가 locale.getpreferredencoding() a locale.Error. 일어날 수있는 한 가지 방법은 파이썬 인 경우입니다 _locale.so C 확장을로드 할 수 없으며 허가 문제가있는 경우 발생할 수 있습니다. 예를 들어, MacPorts는 현재 가지고있는 것으로 알려져 있습니다 문제 설정 권한 설정 사용자 정의 UMASK가있는 경우; 나는 그 문제에 의해 화상을 입었다. 권한을 확인하십시오 _locale.so 파이썬에서 lib/python2.5/lib-dynload 디렉토리를 확인하십시오 755. Macports의 전체 경로는 다음과 같습니다.

/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/

다른 팁

나는 같은 문제에 직면했다. 내가 달렸을 때 locale, 나는 그것을 알아 차렸다 LANG 그리고 LC_ALL 세련되지 않았다. 그래서 나는 다음 줄을 추가하여 이것을 고쳤습니다. .bash_profile 파일:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

그런 다음 나는 단순히 달렸다 :

source ~/.bash_profile 

그리고이 문제는 그 후 내 Mac에서 수정되었습니다.

Mac OS X 문제입니다. 로케일 설정을 보려면 실행하십시오 locale 터미널에서. locale -a 정의 한 모든 로케일을 나열해야합니다 (LC_ALL에 대한 인수로 사용할 수 있음).

그것을주의해라 LC_ALL 및 기타 LC_* 변수는 우선합니다 LANG 정의 할 때.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top