전체 스택 추적 :
➜ ~ pip install virtualenv
Traceback (most recent call last):
File "/usr/bin/pip", line 11, in <module>
sys.exit(main())
File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main
locale.setlocale(locale.LC_ALL, '')
File "/usr/lib64/python3.4/locale.py", line 592, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
같은 서버에서 pip install virtualenv
Python 2.7.x를 성공적으로 실행 했습니다.
이제 방금을 사용하여 python3.4를 설치했습니다 curl https://bootstrap.pypa.io/get-pip.py | python3.4
.
➜ ~ pip --version
pip 8.1.1 from /usr/lib/python3.4/site-packages (python 3.4)
pip uninstall virtualenv
같은 오류가 발생합니다
답변
근본 원인은 다음과 같습니다. 환경 변수 LC_ALL
가 없거나 잘못되었습니다
짧은 답변-
다음 명령을 실행하십시오.
$ export LC_ALL=C
새 터미널 창에서 계속 오류가 발생하면 .bashrc
파일 맨 아래에 오류를 추가 하십시오.
긴 답변
내 locale
설정 은 다음과 같습니다 .
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
파이썬 2.7
$ uname -a
Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU/Linux
$ python --version
Python 2.7.9
$ pip --version
pip 8.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
$ unset LC_ALL
$ pip install virtualenv
Traceback (most recent call last):
File "/usr/local/bin/pip", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/pip/__init__.py", line 215, in main
locale.setlocale(locale.LC_ALL, '')
File "/usr/lib/python2.7/locale.py", line 579, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
$ export LC_ALL=C
$ pip install virtualenv
Requirement already satisfied (use --upgrade to upgrade): virtualenv in /usr/local/lib/python2.7/dist-packages
답변
다음 명령을 실행하십시오 (작동합니다).
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales
답변
누군가 유용하다고 생각할 수도 있습니다. 이러한 로케일 설정은 일반적으로 홈 디렉토리에있는 .bashrc 파일에 넣을 수 있습니다.
.bashrc 에이 명령을 추가하십시오 :
export LC_ALL=C
다음을 입력 source .bashrc
하십시오. 예를 들어 ssh를 통해 연결할 때마다 매번이 명령을 수동으로 호출 할 필요가 없습니다.
답변
env 변수를 내보내는 로케일을 설정할 수 있지만 세션을 시작할 때마다 설정해야합니다. 이 방법으로 로케일을 설정하면 문제점이 영구적으로 해결됩니다.
sudo apt-get install locales
sudo locale-gen en_US.UTF-8
sudo echo "LANG=en_US.UTF-8" > /etc/default/locale
답변
[이 답변은 Linux 플랫폼에서만 대상입니다]
가장 먼저 알아야 할 것은 로케일 구성 파일의 대부분이 경로에서 가져올 수 있다는 것입니다 localedef --help
.
$ localedef --help | tail -n 5
System's directory for character maps : /usr/share/i18n/charmaps
repertoire maps: /usr/share/i18n/repertoiremaps
locale path : /usr/lib/locale:/usr/share/i18n
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>
마지막을 보 /usr/share/i18n
시겠습니까? xx_XX.UTF-8 구성 파일이있는 위치는 다음과 같습니다.
$ ls /usr/share/i18n/locales/zh_*
/usr/share/i18n/locales/zh_CN /usr/share/i18n/locales/zh_HK /usr/share/i18n/locales/zh_SG /usr/share/i18n/locales/zh_TW
이제 뭐 ? 아카이브 바이너리로 컴파일해야합니다. 방법 중 하나, 예를 들어 내가 있다고 가정 /usr/share/i18n/locales/en_LOVE
하면 /etc/locale-gen
파일 을 컴파일 목록에 추가 할 수 있습니다 (예 : 파일).
$ tail -1 /etc/locale.gen
en_LOVE.UTF-8 UTF-8
그리고 다음을 사용하여 바이너리로 컴파일하십시오 sudo locale-gen
.
$ sudo locale-gen
Generating locales (this might take a while)...
en_AG.UTF-8... done
en_AU.UTF-8... done
en_BW.UTF-8... done
...
en_LOVE.UTF-8... done
Generation complete.
원하는과 함께 이제 시스템 기본 로케일을 업데이트 LANG
, LC_ALL
이로 등 … update-locale
:
sudo update-locale LANG=en_LOVE.UTF-8
update-locale
실제로는 /etc/default/locale
환경 변수를 설정하기 위해 로그인 할 때 시스템별로 소스가되는 이 파일 을 업데이트하는 것을 의미 합니다.
$ head /etc/default/locale
# File generated by update-locale
LANG=en_LOVE.UTF-8
LC_NUMERIC="en_US.UTF-8"
...
그러나 우리는 적용하기 위해 재부팅을 원하지 않을 수 있으므로 현재 쉘 세션에서 환경 변수에 소스를 제공 할 수 있습니다.
$ . /etc/default/locale
어때요 sudo dpkg-reconfigure locales
? 당신이 그 주위를 놀면이 명령이 기본적으로 위의 단계를 단순화하는 GUI 역할을한다는 것을 알 것입니다 : 예 : 편집 /etc/locale.gen
-> sudo locale-gen
->sudo update-locale LANG=en_LOVE.UTF-8
파이썬의 경우, /etc/locale.gen
로케일 후보가 포함되어 locale.gen
있고 컴파일되는 한 setlocale(category, locale)
throw없이 작동해야합니다 locale.Error: unsupoorted locale setting
. 파일 을 관찰 하여 올바른 문자열 en_US.UTF-8
/ en_US/....etc
을 설정할 수 있는지 확인한 다음 주석을 해제하고 원하는대로 컴파일하십시오. 해당 파일에 점이 없으면 올바른 문자열은 및 입니다.setlocale()
/etc/locale.gen
zh_CN GB2312
zh_CN
zh_CN.GB2312
답변
Dockerfile의 경우 다음과 같이 작동합니다.
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
locale-gen을 설치하는 방법?
답변
나는 같은 문제가 있었고 나를 위해 일하지 않았다 ."export LC_ALL=c"
시도하십시오 export LC_ALL="en_US.UTF-8"
(작동합니다).