pip install-locale.Error:サポートされていないロケール設定


232

完全なスタックトレース:

  ~ 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 virtualenvPython 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 同じエラーをスローする


2
あなたは読みました、これをまだ?
idjaw 2016

はい、私は@idjawを持っています、ノードは私の場合空の文字列です、あなたが指摘した間違ったロケールとは異なります
ericn

ええ、私はそれに気づきました。pkg-reconfigureを試しましたか?
idjaw 2016

私のサーバーはUbuntu @idjawではなく、centosです。確認したところ、ローカルに問題はないようですLANG=en_GB.utf8
ericn

回答:


616

根本的な原因:環境変数 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

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

5
では、環境変数を設定するだけのことですか?私がこれまでこれに遭遇したことがない理由を知っていますか?この値は自動的に設定されるべきではありませんか?
ericn 2016

@ericこんにちは、投稿を更新しました。この問題は、私のコンピューターのpython2.7で発生します。
ROY 2016

非常に興味深い@ROY、私は他に2つのほぼ同一のサーバーをセットアップしていて、それらは完全に正常に動作していない
ericn

私はletsencrypt-autoを使用してこれに遭遇し、export LC_ALL=C助けました。
maniexx 2016年

10
LC_ALL=C意味がわからない場合は、こちらをご覧ください
ギャレット、

41

次のコマンドを実行します(機能します)。

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

(-1)dpkg-reconfigureコマンドは、Debianベースのシステムでの使用を目的としています。この質問にはcentosepel-releaseリポジトリを有効にしてdpkg-develdpkg-devパッケージをインストールしない限りdpkgをサポートしないRHEL派生物であるがタグ付けされています。それでも、これは理想的なソリューションではありません。

30

誰かがそれを役に立つと思うかもしれません。これらのロケール設定は、通常はホームディレクトリにある.bashrcファイルに置くことができます。
このコマンドを.bashrcに追加するだけ です。
export LC_ALL=C
次にsource .bashrc
、「sshを介して接続するときに、毎回このコマンドを手動で呼び出す必要はありません」と入力します。


4

env変数をエクスポートするロケールを設定できますが、セッションを開始するたびに設定する必要があります。この方法でロケールを設定すると、問題が永久に解決されます。

sudo apt-get install locales
sudo locale-gen en_US.UTF-8
sudo echo "LANG=en_US.UTF-8" > /etc/default/locale

私は誤解していますか、それともsudoインストールしようとしているのと同じラインを使用していますか?sudo apt-get install ... sudo ...
Cyber​​Ed 2018年

2
@Cyber​​Ed、あなたは正しい、私は不要な依存関係を削除するために例を編集しました。
Marco Lavagnino、2018年

3

[この回答は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

それで ?それらをアーカイブバイナリにコンパイルする必要があります。方法の1つ、たとえば/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.

そして、これでシステムのデフォルトのロケールをdesired LANGLC_ALL... etcで更新します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

Pythonの場合、/etc/locale.genそのロケール候補を含み、locale.genコンパイルされる限り、setlocale(category, locale)throwsなしで動作するはずlocale.Error: unsupoorted locale settingです。ファイルを確認することで、に設定する正しい文字列en_US.UTF-8/ en_US/....etcを確認し、コメントを外して必要に応じてコンパイルできます。そのファイルにドットがない場合は、正しい文字列がandであることを意味します。setlocale()/etc/locale.genzh_CN GB2312zh_CNzh_CN.GB2312


私の状況では、短い答えは次のとおりです。1. 行を編集/etc/locale.gen、コメント解除しzh_CN.UTF-8ます。2 sudo locale-gen
SnowOnion



1

エラーメッセージは、ロケール設定に問題があることを示しています。他の回答で示されているようにこれを修正するには、ロケールを変更する必要があります。

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"

この変更は、次のコマンドを使用してbashプロファイルをリロードしない限り、現在のCLIセッションではすぐにはわかりませんsource ~/.bash_profile

この回答は、他の同一ではない、重複しない質問(つまりpipenvに関連しない)に投稿した回答にかなり似ていますが、たまたま同じソリューションが必要です。

モデレーターへ:敬意を表して; 私の以前の答えはこの理由で削除されましたが、実際にはこのエラーはほぼ「ロケールの問題」であるたびに当てはまるので、それは少しばかげていると思います...しかし、トリガーする可能性があるさまざまな状況、言語、および環境がいくつかありますそのエラー。

したがって、A)質問を重複としてマークすることは意味がなく、B)修正は非常に単純で、いずれの場合も同じであり、装飾の恩恵を受けないため、回答を調整することは意味がありません。


1

Ubuntu:

$ sudo vi /etc/default/locale

ファイルの最後に以下の設定を追加します。

LC_ALL = en_US.UTF-8

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.