pip install - locale.Error:不支持的语言环境设置

eri*_*icn 218 python centos pip python-3.x

完整的堆栈跟踪:

?  ~ 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
Run Code Online (Sandbox Code Playgroud)

在同一台服务器上,我成功运行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)
Run Code Online (Sandbox Code Playgroud)

pip uninstall virtualenv 也抛出同样的错误

ROY*_*ROY 577

根本原因是:您的环境变量LC_ALL以某种方式丢失或无效

简短回答 -

只需运行以下命令:

$ export LC_ALL=C
Run Code Online (Sandbox Code Playgroud)

如果您在新的终端窗口中不断收到错误,请将其添加到.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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 如果您想知道"LC_ALL = C"的含义,请参见[此处](http://unix.stackexchange.com/questions/87745/what-does-lc-all-c-do). (9认同)
  • 所以这只是设置环境变量的问题呢?你知道为什么我以前从未遇到过这个吗?不应该自动设置此值吗? (5认同)
  • 非常感谢!"export LC_ALL = C"命令为我完成了这项工作! (4认同)
  • 简短的回答“LC_ALL=C”就足够了。谢谢。 (2认同)

Rah*_*hah 36

运行以下命令(它将起作用):

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)


Iva*_*kin 27

有人可能觉得它很有用.您可以将该区域设置放在.bashrc文件中,该文件通常位于主目录中.
只需在.bashrc中添加此命令:
export LC_ALL=C
然后键入source .bashrc
现在,每次通过ssh进行连接时,无需手动调用此命令.