2016-03-29 10 views
6

Ich habe gerade eine Vagrant-Box mit Ubuntu/Trusty32 erstellt. Der Vagabund provisioner, während Erstellungszeit-Box hat die folgende getan:Kann nicht pip-Pakete aufgrund von locale.error in Ubuntu Vagrant Box installieren

  • heruntergeladen Python virtualenv Quellkodearchivs wget
  • untarred die virtualenv Quellkodearchivs mit tar zxvf ./virtualenv.tar.gz
  • ein virtualenv erstellt venvpython ./virtualenv/virtualenv.py ./venv namens mit
  • Quelle das neu erstellte venv mit source ./venv/bin/activate
  • installiert ein paar Pip-Pakete mit pip install django, pip install mysqlclient usw. in der virtuellen Umgebung.

Das alles hat gut funktioniert und perfekt - von dem Vagabund provisioner ausgeführt, wenn die vagabundierenden Box zum ersten Mal erstellt wurde.

Später jedoch meldete ich mich im vagrant ssh an und versuchte, ipython über pip zu installieren.

$ vagrant ssh 
[email protected]:~$ source venv/bin/activate 
(venv) [email protected]:~$ 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) [email protected]:~$ 

Hinweis: Dies ist eine neue, frische vagrant Box läuft ubuntu/trusty32 aus dem Kasten heraus.

Es gibt einige SO-Fragen über Gebietsschema Fehler, aber folgende ihnen ergab keine Hilfe für dieses vagabundierende Szenario.

Es macht keinen Sinn, dass alle es völlig in Ordnung, während vagrant Box Erstellung/Bereitstellungszeit gearbeitet, aber danach nicht mehr funktioniert, wenn die gleiche Sache manuell versuchen.

Antwort

15

Überprüfen Sie zunächst Ihre aktuelle Locale Konfig durch einfaches setzen locale in der Befehlszeile.

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: indem Sie die folgenden Befehle

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

Geben Sie ein gültiges Gebietsschema in der LC_CTYPE Umgebungsvariable:

Sie sollen etwas ähnliches sehen. wird hier verwendet, aber wenn Sie alle verfügbaren Sprachumgebungen auf Ihrem System überprüfen müssen, führen Sie den Befehl locale -a

Dies sollte das Problem lösen.

+0

toll ... das hat funktioniert ... .was ist gerade passiert ??? Gibt es einen Unterschied zwischen dem Einschließen von 'en_US.UTF-8' in Anführungszeichen und dem Einschließen von' en_US.UTF-8' in Anführungszeichen? –

+0

Hinweis .. Ich muss dies jedes Mal tun, wenn ich mich in der Shell der Maschine anmelde. Wie mache ich es dauerhaft? –

+0

Sie können die Befehle in '.bashrc' hinzufügen und so wird es bei jeder Anmeldung in Ihrer Shell ausgeführt. Und vergessen Sie nicht, dies als Antwort zu markieren, damit jemand anderes, der das Problem hat, es als Antwort betrachten kann :) –