由于 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 创建期间完成了以下操作:
- 已使用
wget
下载 python virtualenv 源压缩包
- 使用
tar zxvf ./virtualenv.tar.gz
解压了 virtualenv 源压缩包
- 使用
python ./virtualenv/virtualenv.py ./venv
创建了一个名为 venv
的虚拟环境
- 使用
source ./venv/bin/activate
获取新创建的 venv
- 在虚拟环境中安装了一些带有
pip install django
、pip install mysqlclient
等的 pip 包。
所有这些都运行良好且完美 - 在第一次创建 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
这应该可以解决问题。
我刚刚用 ubuntu/trusty32 创建了一个 vagrant box。 vagrant provisioner 在 box 创建期间完成了以下操作:
- 已使用
wget
下载 python virtualenv 源压缩包
- 使用
tar zxvf ./virtualenv.tar.gz
解压了 virtualenv 源压缩包
- 使用
python ./virtualenv/virtualenv.py ./venv
创建了一个名为 - 使用
source ./venv/bin/activate
获取新创建的 venv
- 在虚拟环境中安装了一些带有
pip install django
、pip install mysqlclient
等的 pip 包。
venv
的虚拟环境
所有这些都运行良好且完美 - 在第一次创建 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
这应该可以解决问题。