由于 locale.error 在 Ubuntu Vagrant Box 中,无法安装 pip 包

Cannot install pip packages due to locale.error inside Ubuntu Vagrant Box

我刚刚用 ubuntu/trusty32 创建了一个 vagrant box。 vagrant provisioner 在 box 创建期间完成了以下操作:

所有这些都运行良好且完美 - 在第一次创建 vagrant box 时由 vagrant provisioner 执行。

然而,后来,我登录到 vagrant ssh 并尝试通过 pip.

安装 ipython
$ vagrant ssh
vagrant@django-box:~$ source venv/bin/activate
(venv) vagrant@django-box:~$ pip install ipython
Traceback (most recent call last):
  File "/home/vagrant/venv/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/home/vagrant/venv/local/lib/python2.7/site-packages/pip/__init__.py", line 215, in main
    locale.setlocale(locale.LC_ALL, '')
  File "/home/vagrant/venv/lib/python2.7/locale.py", line 579, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting
(venv) vagrant@django-box:~$ 

注意:这是一个全新的 vagrant box 运行 ubuntu/trusty32 开箱即用。

有几个关于语言环境错误的 SO 问题,但遵循这些问题后发现对这种无所事事的情况没有帮助。

所有这些在 vagrant box creation/provision 期间都工作得很好,但之后手动尝试同样的事情时却无法工作[=51] 是没有意义的=].

首先检查您当前的 locale 配置,只需在命令行中输入 locale

您应该会看到类似以下内容:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
LANG=C
LC_CTYPE=utf8

通过 运行 执行以下命令在 LC_CTYPE 环境变量中设置有效的语言环境:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE="en_US.UTF-8"
locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales

PS。 en_US.UTF-8 在这里使用,但如果您需要检查系统上所有可用的语言环境,运行 命令 locale -a

这应该可以解决问题。