типун установить локаль.Ошибка: неподдерживаемый параметр локали



полный 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 выдает ту же ошибку тоже

824   8  

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?

docker ubuntu / bin/sh: 1: 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

    Ничего не найдено.