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

8voto

Blaze Punkte 1372

Python kommt jetzt mit seiner eigenen Implementierung einer virtuellen Umgebung namens "venv". Ich würde empfehlen, das zu benutzen, anstelle von virtualenv.

Aus venv - docs zitierend:

Veraltet seit Version 3.6: pyvenv war das empfohlene Werkzeug zur Erstellung virtueller Umgebungen für Python 3.3 und 3.4 und ist in Python 3.6 veraltet.

Geändert in Version 3.5: Die Verwendung von venv wird jetzt für die Erstellung virtueller Umgebungen empfohlen.

Für Windows, um venv in einem Projekt zu initiieren, öffnen Sie die Eingabeaufforderung:

python -m venv "c:\pfad\zu\meinerumgebung"

(Würde empfehlen, doppelte Anführungszeichen um den Verzeichnispfad zu setzen, wenn er Leerzeichen enthält. Z.B.: "C:/My Dox/Spaced Directory/Something")

Sobald venv eingerichtet ist, sehen Sie einige neue Ordner im Verzeichnis Ihres Projekts. Einer davon wäre "Scripts".

Um venv zu aktivieren oder aufzurufen, benötigen Sie:

C:\> \Scripts\activate.bat

Sie können eine virtuelle Umgebung deaktivieren, indem Sie "deactivate" in Ihrer Shell eingeben. Damit sind Sie nun bereit, Ihre projektspezifischen Bibliotheken zu installieren, die sich unter dem Ordner "Lib" befinden werden.

\================================ Edit 1 ==================================== Das hier diskutierte Szenario entspricht nicht dem ursprünglich geforderten, ich füge dies nur hinzu, falls jemand vscode mit der Python-Erweiterung verwendet

Falls Sie vscode mit seiner Python-Erweiterung verwenden, könnten Sie auf ein Problem mit pylint stoßen, das auf die globale Installation verweist. In diesem Fall wird pylint nicht in der Lage sein, die in Ihrer virtuellen Umgebung installierten Module zu sehen und wird daher Fehler beim Importieren anzeigen.

Hier ist eine einfache Methode, um das zu umgehen.

cd Workspace\Scripts
.\Activate.ps1
code .

Wir aktivieren zunächst die Umgebung und rufen dann VS Code auf, damit pylint innerhalb der Umgebung gestartet wird und alle lokalen Pakete sehen kann.

6voto

8bitIcon Punkte 2579

In Python3.6 habe ich es versucht python3 -m venv myenv, wie in der Dokumentation angegeben, aber es hat so lange gedauert. Also der sehr einfache und schnelle Befehl ist python -m venv yourenv Es hat bei mir unter Python3.6 funktioniert.

5voto

Stryker Punkte 5104

Auf Mac musste ich Folgendes tun, um es zum Laufen zu bringen.

mkvirtualenv --python=/usr/bin/python3 DeinEnvNameHier

4voto

Antony Punkte 5216

Wenn Sie Python3 installieren (brew install python3) sowie virtualenv burrito, können Sie dann mkvirtualenv -p $(which python3) env_name ausführen.

Natürlich weiß ich, dass virtualenv burrito nur ein Wrapper ist, aber es hat mir im Laufe der Jahre gut gedient und einige Lernkurven reduziert.

3voto

Hardik Gajjar Punkte 985

virtualenv --python=/usr/local/bin/python3 das wird python3 Pfad für Ihre virtuelle Umgebung hinzufügen.

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