879 Stimmen

Verwendung von Python 3 in virtualenv

Mit virtualenv führe ich meine Projekte mit der Standardversion von Python (2.7) aus. Bei einem Projekt muss ich jedoch Python 3.4 verwenden.

Ich habe brew install python3 benutzt, um es auf meinem Mac zu installieren. Wie erstelle ich jetzt ein virtualenv, das die neue Version verwendet?

z.B. sudo virtualenv envPython3

Wenn ich versuche:

virtualenv -p python3 test

bekomme ich:

Virtualenv wird ausgeführt mit Interpreter /usr/local/bin/python3
Grundprefix verwenden '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
Neues Python-Ausführbares in test/bin/python3.4
Auch Ausführbares in test/bin/python erstellen
Fehler beim Importieren des Site-Moduls
Traceback (zuletzt aufgerufener Anruf):
  Datei "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", Zeile 67, in 
    import os
  Datei "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", Zeile 634, in 
    von _collections_abc import MutableMapping
ImportError: Kein Modul namens '_collections_abc'
FEHLER: Das Ausführbare test/bin/python3.4 funktioniert nicht
FEHLER: Es nimmt an, dass sys.prefix '/Users/user/Documents/workspace/test' ist (sollte '/Users/user/Documents/workspace/test/test' sein)
FEHLER: Virtualenv ist nicht mit diesem System oder Ausführbaren kompatibel

1voto

Carlo Carandang Punkte 146

Unter Windows-Befehlszeile hat das Folgende für mich funktioniert. Zuerst finden Sie heraus, wo sich Ihre Python-Ausführungdateien befinden:

where python

Dies wird die Pfade zu den verschiedenen python.exe auf Ihrem System ausgeben. Hier waren meine:

C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe

Also für Python3 befand es sich bei mir im ersten Pfad, also gehe ich zum Stammverzeichnis der Anwendung, wo ich einen virtuellen Umgebungordner erstellen möchte. Dann führe ich das folgende aus, das den Pfad zu meiner Python3-Ausführung enthält und meine virtuelle Umgebung 'venv' benennt:

virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv

Dann aktiviere die virtuelle Umgebung:

call venv\Scripts\activate.bat

Schließlich installiere die Abhängigkeiten für diese virtuelle Umgebung:

pip install -r requirements.txt

Diese requirements.txt können manuell befüllt werden, wenn Sie die Bibliotheken/Module kennen, die für Ihre Anwendung in der virtuellen Umgebung benötigt werden. Wenn Sie die Anwendung in einer anderen Umgebung laufen hatten, können Sie die Abhängigkeiten automatisch erzeugen, indem Sie das Folgende ausführen (gehe zum Anwendungsverzeichnis in der Umgebung, wo es funktioniert):

pip freeze > requirements.txt

Dann, sobald Sie das requirements.txt haben, das Sie 'eingefroren' haben, können Sie die Anforderungen auf einer anderen Maschine oder in einer sauberen Umgebung mit dem folgenden installieren (nach dem Wechsel zum Anwendungsverzeichnis):

pip install -r requirements.txt

Um Ihre Python-Version in der virtuellen Umgebung zu sehen, führen Sie aus:

python --version

Dann voila...Sie haben Ihr Python3 in Ihrer virtuellen Umgebung ausgeführt. Ausgabe für mich:

Python 3.7.2

1voto

MD. SHIFULLAH Punkte 111

Sie können auch "venv" verwenden, um eine virtuelle Umgebung zu erstellen.

Befehl: python3 -m venv [Umgebungsname]

Beispiel: python3 -m venv my_env

Aktivieren Sie die virtuelle Umgebung:

Für Windows:

Befehl: [Umgebungsname]\Scripts\activate

Beispiel: my_env\Scripts\activate

Für Linux:

Befehl: source [Umgebungsname]/bin/activate

Beispiel: source my_env/bin/activate

0voto

PrincessPea Punkte 31

Ich habe den gleichen Fehler erhalten, weil es zu einem Konflikt mit der miniconda3-Installation kam. Wenn du also "which virtualenv" eingibst und miniconda installiert hast und es darauf zeigt, kannst du es entweder entfernen (wenn du wie ich noch nicht zu ihm gewechselt bist) oder deine Umgebungsvariable ändern, um auf die gewünschte Installation zu verweisen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X