2017-01-12 4 views
1

Zuvor war die virtuelle Umgebung auf meinem System installiert. Ich habe zwei verschiedene VirtualEnv für zwei verschiedene Projekte erstellt, an denen ich gearbeitet habe.
Ich benutze, um eine dieser virtuellen Umgebung zu aktivieren und würde beginnen, am Projekt zu arbeiten.
Kürzlich wurde mein System beschädigt und ich aktualisierte das Betriebssystem nach dem Kopieren aller Projekte und virtuellen Umgebungen. Ich habe die Projektdateien und virtuellen Umgebungen in mein System und die installierte virtuelle Umgebung kopiert.virtuelle Umgebung wird nach Neuinstallation von virtualenv nicht aktiviert

Set PYTHON = '/ usr/lib/python3' in Bashrc

Nun, wenn ich eine der kopierten Umgebung aktiviert und versucht, Python manage.py runserver zu laufen, ich unten Fehler bekam

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' 
Aborted (core dumped) 

Das Ausführen von Pip in diesem virtuellen Env verursacht denselben Fehler.

Bitte schlagen Sie mir vor, was ich brauche, damit mein Projekt wie bisher funktionieren kann.

Antwort

1

Es wird nicht empfohlen, eine virtuelle Umgebung zu verschieben, d. H. Auf ein neues System oder eine andere Betriebssysteminstallation - A SO answer.

Gute Praxis ist die Anforderungsliste (installierte Python-Pakete) zu erzeugen - während virtuellen Umgebung aktiv ist, auszuführen:

$(venv) pip freeze > requirements_venv.txt 

Auf der neuen Anlage (löschen Sie die kopierte Venv wenn Sie es haben), ein Setup frische virtuelle Python-Umgebung 3, aktiviert und dann die Python-Pakete installieren:

$ virtualenv -p /usr/bin/python3 venv/ 
$ source env/bin/activate 
$ pip install -r requirements_venv.txt 

Wahrscheinliche Ausgabe:

Fatal Python error: Py_Initialize: Unable to get the locale encoding 
ImportError: No module named 'encodings' 
Aborted (core dumped) 

Staaten, die Python-System 3 versucht, etwas zu laden, die für eine andere Python-Version heißt Python 2.x geschrieben wurde.

Wahrscheinlichste Ursache für die Fehler können Sie bekommen sein,

  • Erstellt virtuelle Umgebung mit einer anderen Python-Version.
  • Unsachgemäße PYTHONPATH,
  • Nicht das Terminal neu zu starten nach dem Abbinden PYTHONPATH

Lösung/Weg-out:

Prüfen Sie zuerst, wenn Sie in der Lage sind, in den Python-Shell zu erhalten dh execut python oder python3 Befehl im Terminal. Wenn nicht, ungesetzt die PYTHONPATH in .bashrc und die folgenden Befehle im Terminal auszuführen (oder was auch immer der genaue Pfad auf Ihrem System):

# export PYTHONHOME=/usr/local/lib/python3.5/ 
# export PYTHONPATH=/usr/local/lib/python3.5 

jetzt wieder versuchen, die Python-Shell ieie python oder python3 zu starten ausführen Befehl im Terminal, müssen Sie etwas ähnliches wie unten erhalten:

Python 3.5.2 (default, Jul 17 2016, 00:00:00) 
[GCC 4.8.4] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

Mit Python-Shell arbeiten, höchstwahrscheinlich nicht den gebuchten Problem gegenüberstellen können - wenn Sie das tun, löschen Sie die virtuelle Umgebung kopiert und installiert werden und neue (wie oben angegeben).

0

Ist Python korrekt installiert?

Python laufen in cmd ein und überprüfen Sie den Pfad

auch wenn einige Abhängigkeiten gebrochen werden dann richtig durch

sudo apt-get install --reinstall python2.7 

sudo apt-get update 

Jetzt versuchen zu verwenden virtualenv von

pip install virtualenv <name> 
or 
pip install virtualenv . 

aktiv Versuchen Sie es erneut installieren Quelle ./bin/activate

+0

Also muss ich das virtualenv neu erstellen, kann ich die vorherigen virtuellen Umgebungen nicht wiederverwenden? – User42

+0

@ User42 Gibt es Kernabhängigkeiten in diesem Umfeld? Wenn sie normale Pakete sind, versuche sie in diesem neuen virtualenv zu installieren. –

+0

@ User42 siehe http://stackoverflow.com/questions/7438681/duplicate-virtualenv und diese https://github.com/edwardgeorge/virtualenv-clone –

0

Virtuelle Umgebungen verwenden einige symbolische Verknüpfungen Zurück zur Quell-Python-Installation, um Ressourcen und Binärdateien zu teilen. Ich denke, es ist sehr zweifelhaft, dass Sie in der Lage sein sollten, eine virtuelle Umgebung auf ein neues/anderes System zu verschieben und es von Anfang an funktionieren zu lassen.

Verwandte Themen