【问题标题】:Cannot install pip packages due to locale.error inside Ubuntu Vagrant Box由于 Ubuntu Vagrant Box 内的 locale.error 无法安装 pip 包
【发布时间】:2016-07-16 23:39:34
【问题描述】:

我刚刚用 ubuntu/trusty32 创建了一个 vagrant box。 vagrant provisioner 在 box 创建期间做了以下事情:

  • 使用wget下载了python virtualenv源tarball
  • 使用tar zxvf ./virtualenv.tar.gz解压virtualenv源tarball
  • 使用python ./virtualenv/virtualenv.py ./venv 创建了一个名为venv 的virtualenv
  • 使用source ./venv/bin/activate 获取新创建的venv
  • 在虚拟环境中安装了几个带有pip install djangopip 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 创建/提供期间所有这些都运行良好,但之后手动尝试相同的事情时却无法正常运行,这是没有道理的。。 p>

【问题讨论】:

    标签: python ubuntu vagrant pip virtualenv


    【解决方案1】:

    首先检查您当前的 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

    这应该可以解决问题。

    【讨论】:

    • 太棒了...这工作... .刚刚发生了什么???将en_US.UTF-8 包含在引号内和不将en_US.UTF-8 包含在引号内有什么区别吗?
    • 注意.. 每次我登录机器的外壳时都需要这样做。如何让它永久化?
    • 您可以在.bashrc 中添加命令,这样每次您登录shell 时都会执行。并且不要忘记将此标记为答案,以便其他有问题的人可以将其视为答案:)
    • 仍然不明白为什么 vagrant Provisioner 可以正常工作,但手动尝试时却不行
    猜你喜欢
    • 2015-09-14
    • 2019-02-27
    • 1970-01-01
    • 2019-01-16
    • 2023-04-03
    • 2017-11-01
    • 2019-06-07
    • 2018-05-15
    • 2021-12-29
    相关资源
    最近更新 更多