типун установить локаль.Ошибка: неподдерживаемый параметр локали
полный stacktrace:
➜ ~ 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 выдает ту же ошибку тоже
8 ответов:
основная причина: ваша переменная окружения
LC_ALLотсутствует или недействителен как-токороткий ответ-
просто выполните следующую команду:
$ export LC_ALL=Cдлинный ответ-
вот мой
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вместо python2.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
для 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?
[этот ответ предназначен только для платформы 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? Если вы играете вокруг него, вы будете знать, что эта команда в основном действует как графический интерфейс для упрощения вышеуказанных шагов, т. е. Edit/etc/locale.gen->sudo locale-gen->sudo update-locale LANG=en_LOVE.UTF-8для python, пока
/etc/locale.genсодержит этот кандидат локали иlocale.genкомпилируется,setlocale(category, locale)должен работать без бросковlocale.Error: unsupoorted locale setting. Вы можете проверить правильность строкиen_US.UTF-8/en_US/....etcустановить вsetlocale(), путем наблюдения
у меня такая же проблема, и
"export LC_ALL=c"не работает для меня,
Попробуйexport LC_ALL="en_US.UTF-8"(Она будет работать).
сообщение об ошибке указывает на проблему с настройкой локали. Чтобы исправить это, как указано в других ответах, вам нужно изменить свой языковой стандарт.
на Mac OS X Sierra я обнаружил, что лучший способ сделать это-изменить
~/bash_profileфайл выглядит следующим образом:export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"это изменение не будет сразу видно в текущем сеансе cli, если вы не перезагрузите профиль bash с помощью:
source ~/.bash_profile.этот ответ довольно близок к ответам, которые я опубликовал другие неидентичные, не повторяющиеся вопросы (т. е. не связанные с pipenv), но которые требуют одного и того же решения.
модератору: с уважением; мой предыдущий ответ был удален по этой причине, но я чувствую, что это было немного глупо, потому что на самом деле этот ответ применяется почти всякий раз, когда ошибка "проблема с locale"... но есть ряд различных ситуаций, языков и сред, которые могут вызвать эту ошибку.
таким образом, это а) не имеет смысла отметьте вопросы как дубликаты и б) не имеет смысла адаптировать ответ либо потому, что исправление очень просто, одинаково в каждом случае и не выигрывает от украшения.
Comments