2016-04-22 11 views
17

Upgrade hatte ich Python 3.4 in meinem virtualenv, aber nach Ubuntu 16.04 Python ein Upgrade auf 3.5 so Python in virtualenv Abstürze mit diesen Fehlern Upgrade:virtualenv Python brach nach ubuntu 15,10-16,04

Could not find platform independent libraries <prefix> 
Could not find platform dependent libraries <exec_prefix> 
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>] 
Fatal Python error: Py_Initialize: Unable to get the locale encoding 
ImportError: No module named 'encodings' 

Current thread 0x00007f2f2dbcb700 (most recent call first): 
fish: “python” terminated by signal SIGABRT (Abort) 

Wie kann ich fix es?

+0

Haben Sie versucht, Python 3.5 neu zu installieren? Das Modul 'encodings' ist Teil der Basisinstallation. – mprat

Antwort

4

Ich reparierte diese durch die minimale Installation python3.4 arbeiten, damit meine virtualenv gut genug gearbeitet, um die Liste der Pakete zu bekommen, dann eine neue mit python3.5 ... wie folgt hergestellt:

erhalten python3.4 minimale Pakete:

wget http://launchpadlibrarian.net/221250032/python3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb 
wget http://launchpadlibrarian.net/221250033/libpython3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb 
sudo dpkg -i --force-breaks libpython3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb 
sudo dpkg -i python3.4-minimal_3.4.3-1ubuntu1~14.04.3_amd64.deb 

Mein virtualenv ist hier: ~/virtualenv/example

die Liste der Pakete in Ihrem virtualenv bekommen (die jetzt gut genug für diese funktionieren sollte, aber vielleicht nicht tun andere Dinge richtig):

source ~/virtualenv/example/bin/activate 
pip freeze > /tmp/requirements.txt 
deactivate 

Sie sich von python3.4 befreien, zu Ubuntu 16.04 bevorzugten Zustand zurückzukehren:

sudo dpkg --purge python3.4-minimal 
sudo dpkg --force-depends --purge libpython3.4-minimal 

ein neue virtualenv Stellen mit den richtigen Paketen:

virtualenv -p python3.5 example 
source ~/virtualenv/example/bin/activate 
pip install -r /tmp/requirements.txt 

Das sollte jetzt funktionieren, mit all deinen alten Paketen, aber in python3.5. Sollte ...

Siehe auch Upgrade python in a virtualenv

1

Ich habe gleiches Problem, und ich löste das ganze virtualenv Neue

PS: Sorry für mein schlechtes Englisch.

+0

Wie Django-Projekt zu einem anderen virtualenv bewegen und es zum Funktionieren bringen? –

0

Ich habe das gleiche Problem erlebt und ich habe es geschafft, "reparieren" ist durch Neuanlage der Virtualenv und Neuinstallation der erforderlichen Pakete mit Pip.

Erstellen Sie ein neues virtualenv:

virtualenv <new-virtualenv> 

aktivieren sie:

source <new-virtualenv>/bin/activate 

Installieren Sie die Pakete:

pip install <required-packages> 

Und ich war wieder gut zu gehen!

Sie können die alten virtualenv halten, indem nur die Umbenennung des Ordners:

mv <old-virtualenv> <old-virtualenv>-backup 
+0

Gibt es eine Möglichkeit, Pip Paketliste aus gebrochenen virtualenv extrahieren? –

1

ich heute hatte das gleiche Problem, und das ist, wie ich es gelöst haben:

Problem: Zum einen als Ich verstehe, das Problem tritt auf, weil nach dem Upgrade auf Ubuntu 16.04 die vorherige Version von Python auch aktualisiert. Daher funktionieren symbolische Links in einer Python3-Umgebung nicht mehr.

Lösung 1: Wie oben geschrieben wurde, besteht die einfache Lösung darin, alle Python3-Umgebungen zu entfernen und neu zu erstellen. Ich mag es nicht, weil ich es nach dem Upgrade von Ubuntu zum zweiten Mal mache. Wahrscheinlich muss ich in zukünftigen Projekten auch mehrere Python 3-Versionen verwenden.

Lösung 2: Das ist, was ich heute versucht habe und es funktioniert gut. Anstatt virtualenv + virtualenvwrapper zu verwenden, entschied ich mich, die Kombination pyenv + pyenv-virtualenv zu versuchen.

Der wesentliche Unterschied zwischen beiden Ansätzen ist:

Pyenv tatsächlich kopiert eine komplette Installation Python jedes Mal, wenn eine neue Version pyenv erstellen. Im Gegensatz dazu verwendet virtualenv symbolische Links, um die Größe der virtualenvs zu verringern.

Howto:

  1. pyenv installieren, wie mit den erforderlichen Versionen von Python beschrieben here zusammen 2 und 3.
  2. Schauen Sie sich here an, wie Sie mit virtualenv mit Pyenv arbeiten können.
  3. Erstellen Sie eine neue Umgebung, installieren Sie alle Abhängigkeiten mit pip und hoffentlich vergessen Sie das Problem der gebrochenen Symlinks beim nächsten Ubuntu-Upgrade.
0

Ich reparierte sie durch eine neue virtualenv Erstellen und Kopieren der Python-Executable in den alten gebrochenen virtualenv.