2009-12-02 4 views
28

그래서 오늘은 2.0.2 바자 업그레이드, 나는이 메시지 (내가 BTW, 눈 표범에있어) 받기 시작 :python 로켈 이상한 오류. 여기서 정확히 무슨 일이 일어나고있는거야?

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. 

아주 이상한, 내 LANG 실제로 비어 있으므로합니다. 내가

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을 수출하는 것은 그러나, 이것은 당신이 무슨 일이 일어나고 있는지 설명해 주시겠습니까 문제

[email protected]-045:~ $ export LANG=en_US.UTF-8 
[email protected]:~ $ 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') 

를 해결

[email protected]:~ $ export LANG=en_US.UTF-8 
[email protected]:~ $ 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. 

도움이되지 않습니다 로케일 모듈과 수리를 할 때 비슷한 일이 일어날 여기에 더 나은 googlability?

+0

더 이상의 문제에 대한 통찰력이 있으십니까? –

+0

+1 두 개의 "내보내기"행으로 인해 "ValueError : unknown locale : ..."이 사라졌습니다. – Bogatyr

+0

지난 두 줄에 감사드립니다. 저를 구했고 많은 Mac 사용자들이 많은 시간을 보냈습니다. –

답변

16

2016 업데이트 : 적어도 2013 년 이후로는 this is a Python bug 이후로, 파이썬이 Mac OS X 및 BSD와 같은 비 GNU 로케일에 잘 반응하지 않는 것으로 나타났습니다. 이 버그는 2016 년 9 월 현재까지 계속 열려 있으며 모든 Python 버전에 영향을 미칩니다. 더 LANG 환경 변수 설정을 없었다 경우


, 기회는 당신이 가지고있는 어느 쪽 LC_CTYPE (키 변수) 또는 LC_ALL 환경 변수 UTF-8로 설정 유효한 OS X의 로케일하지 않은, (집합 경우에 우선하는) . Apple에서 제공 한 /usr/bin/python 또는 10.6 SDK (아마도 10.5 SDK)를 사용하여 제작 한 맞춤 Python으로 재생산하기는 쉽습니다. 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()locale.Error으로 올 경우에만 사용자가 쓴 메시지가 나타나야한다는 것을 나타냅니다. 한 가지 방법은 파이썬 _locale.so C 확장을로드 할 수없고 권한 문제가있는 경우 발생할 수 있습니다. 예를 들어, MacPorts는 현재 problems setting permissions if you have a customized umask을 가진 것으로 알려져 있습니다. 나는 그 문제로 나 자신을 태웠다. Python lib/python2.5/lib-dynload 디렉토리에서 _locale.so의 사용 권한을 확인하고 755인지 확인하십시오. MacPorts의 전체 경로는 다음과 같아야합니다.

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

Python using은 수동으로 설치되며, OSX에 번들로 제공되는 표준 파이썬 설치가 아닙니다. 또한 _locale.so 또는 _locale.dylib가없는 것 같습니다 .... 어? –

+0

lib-dynlib에 _locale.so가 있어야합니다. 그렇지 않다면 파이썬은 OS X에서 제대로 빌드되지 않았으며 locale.py는 몇 가지 기본 동작으로 돌아갑니다. –

+0

@NedDeily, https://bugs.python.org/issue18378#msg215215에서 매우 좋은 설명을 주셨으므로이 답변이 보여주는 것보다 더 잘 알고있는 것처럼 보입니다. 어쩌면 답을 고칠 수 있을까요? (googlability 들어, 질문처럼) – hmijail

4

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

LC_ALL 및 기타 LC_* 변수는 정의시 LANG보다 우선합니다.

+0

더 구체적으로 이것은 Mac OS X뿐 아니라 환경 문제입니다. Linux 및 다른 UNIX 클론은 환경을 사용자 정의하고 부주의하게 물건을 버리면 동일한 문제가 발생하기 쉽습니다. 때로는 문제가 즉시 나타나기도하고, 실제로 문제가 발생할 때까지 문제가 나타나지 않는 경우도 있습니다. 같은 일을하는 데 너무 많은 방법이있는 또 다른 증상은 ... – jathanism

+1

@synack : 이것은 OS X로 시작된 것입니다. Stefano가 환경을 바꿨 기 때문에 * 생각하지 않습니다. – u0b34a0f6ae

+0

@ kaiser.se : 왜 이것이 OS X에서 문제라고 생각합니까? LC_CTYPE 또는 LC_ALL 세트를 가짐으로써 OP에서 보이는 행동을 설명하고 문서화 된대로 작동합니다. 내가 준 예제는 현재 Debian Linux 시스템에서 정확히 같은 방식으로 실패합니다. 단, LC_CTYPE을 잘못된 값 "UTF-8"로 내보낼 때 해당 시스템의 최신 bash가 실제로 경고합니다. –

1

동일한 문제가 발생했습니다. locale을 실행했을 때 LANGLC_ALL이 설정되지 않은 것으로 나타났습니다.그래서 .bash_profile 파일에 다음 행을 추가하여이 문제를 해결 :

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

은 그럼 간단하게 실행 :

source ~/.bash_profile 

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

관련 문제