Mit virtualenv starte ich meine Projekte mit der Standardversion von Python (2.7). Bei einem Projekt muss ich Python 3.4 verwenden.
Ich habe brew install python3
verwendet, um es auf meinem Mac zu installieren. Wie erstelle ich nun eine virtuelle Umgebung, die die neue Version verwendet?
z.B. Sudo virtualenv envPython3
Wenn ich es versuche:
virtualenv -p python3 test
Ich bekomme:
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
import os
File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable
einfach laufen
virtualenv -p python3 envname
Update nach OP's edit:
Es gab einen Fehler in der OP-Version von virtualenv, wie beschrieben hier . Das Problem wurde durch Ausführen von behoben:
pip install --upgrade virtualenv
Python 3 bietet eine integrierte Unterstützung für virtuelle Umgebungen - venv . Es könnte besser sein, das stattdessen zu verwenden. Unter Bezugnahme auf die Dokumente:
Die Erstellung virtueller Umgebungen erfolgt durch Ausführen des Skripts pyvenv:
pyvenv /path/to/new/virtual/environment
Update für Python 3.6 und neuer:
As pawciobiel richtig comments , pyvenv
ist veraltet ab Python 3.6 und der neue Weg ist:
python3 -m venv /path/to/new/virtual/environment
Installationsvoraussetzungen.
Sudo apt-get install python3 python3-pip virtualenvwrapper
Erstellen Sie eine Python3-basierte virtuelle Umgebung. Optional können Sie das --system-site-packages
-Flag aktivieren.
mkvirtualenv -p /usr/bin/python3 <venv-name>
In die virtuelle Umgebung einstellen.
workon <venv-name>
Installieren Sie andere Anforderungen mithilfe von pip
Package Manager.
pip install -r requirements.txt
pip install <package_name>
Wenn Sie an mehreren python Projekten gleichzeitig arbeiten, wird normalerweise empfohlen, allgemeine Pakete wie pdbpp
global zu installieren und sie dann in virtuellen Umgebungen wiederzuverwenden.
Die Verwendung dieser Technik spart viel Zeit beim Abrufen und Installieren von Paketen, abgesehen davon, dass nur minimaler Speicherplatz und Netzwerkbandbreite benötigt werden.
Sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>
Wenn es viele systemweite python Pakete gibt, wird empfohlen, --system-site-packages
Flag nicht zu verwenden, insbesondere während der Entwicklung, da ich bemerkt habe, dass es den Start von Django sehr verlangsamt . Ich gehe davon aus, dass bei der Django -Umgebungsinitialisierung alle Site-Pakete manuell vom Systempfad gescannt und angehängt werden, was der Grund sein könnte. Sogar python manage.py Shell
wird sehr langsam.
Nach diesem Experiment funktioniert welche Option besser. Könnte sicher sein, nur das --system-site-packages
-Flag für Django -Projekte zu überspringen.
Ich habe versucht pyenv und es ist sehr praktisch, um python Versionen zu wechseln (global, lokal im Ordner oder in der virtuellen Umgebung):
brew install pyenv
installieren Sie dann die gewünschte Python -Version:
pyenv install 3.5.0
und erstelle einfach virtualenv mit dem Pfad zur benötigten Interpreter-Version:
virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv
Das war's, überprüfe die Version:
. ./myenv/bin/activate && python -V
Es gibt auch Plugins für pyenv pyenv-virtualenv , aber irgendwie hat es bei mir nicht funktioniert.
virtualenv --python=/usr/bin/python3 <name of env>
arbeitete für mich.
Sie können beim Erstellen der Umgebung eine bestimmte Version von Python angeben.
Es wird in virtualenv.py erwähnt
virtualenv --python=python3.5 envname
In einigen Fällen muss dies der vollständige Pfad zur ausführbaren Datei sein:
virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname
Wie -p
funktioniert
parser.add_option(
'-p', '--python',
dest='python',
metavar='PYTHON_EXE',
help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
'interpreter to create the new environment. The default is the interpreter that '
'virtualenv was installed with (%s)' % sys.executable)
Ich hatte die gleiche ERROR
Nachricht. Die Lösung von tbrisker hat in meinem Fall nicht funktioniert. Stattdessen löste dies das Problem:
$ python3 -m venv .env
In python3.6 habe ich python3 -m venv myenv
versucht, wie in der Dokumentation beschrieben, aber es hat so lange gedauert. Der sehr einfache und schnelle Befehl lautet also python -m venv yourenv
. Er hat bei mir unter python3.6 funktioniert.
Zusätzlich zu den anderen Antworten empfehle ich, zu überprüfen, welche Instanz von virtualenv Sie ausführen:
which virtualenv
Wenn dies etwas in/usr/local/bin auftaucht, ist es möglich - sogar wahrscheinlich -, dass Sie virtualenv installiert haben (möglicherweise mithilfe einer Instanz von easy_tools oder pip), ohne den Paketmanager Ihres Systems zu verwenden (im Falle von OP). Das war mein Problem.
Vor Jahren - als ich noch unwissender war - hatte ich virtualenv installiert und es maskierte das von meinem System bereitgestellte virtualenv.
Nachdem ich dieses alte, kaputte Virtualenv entfernt hatte, verschwanden meine Probleme.
Dies ist alles, was Sie benötigen, um eine virtuelle Umgebung in python/python3 auszuführen
Stellen Sie zuerst sicher, dass Sie virtualenv und jetzt haben
Lauf:
virtualenv -p python3 <env name>
Manchmal schlägt der obige Befehl fehl, verwenden Sie einfach diesen Befehl:
python3 -m virtualenv <env_name> # you can specify full path instead <env_name> to install the file in a different location other than the current location
Aktivieren Sie nun die virtuelle Umgebung:
source <env_name>/bin/activate
Oder:
source `pwd`/<env_name>/bin/activate
Führen Sie aus (um zu beenden):
deactivate
Auf dem Mac musste ich Folgendes tun, um es zum Laufen zu bringen.
mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME>
Dies fügt den Pfad python für Ihre virtuelle Umgebung hinzu.
Wenn Sie python3 (brew install python3
) zusammen mit virtualenv burrito installieren, können Sie mkvirtualenv -p $(which python3) env_name
ausführen.
Natürlich weiß ich, dass virtualenv Burrito nur eine Verpackung ist, aber es hat mir im Laufe der Jahre gute Dienste geleistet und einige Lernkurven verkürzt.
Es hat bei mir funktioniert
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
Für diejenigen, die Probleme bei der Arbeit mit Anaconda3 (Python 3) haben.
Du könntest benutzen
conda create -n name_of_your_virtualenv python=python_version
So aktivieren Sie die Umgebung (Linux, MacOS)
source activate name_of_your_virtualenv
Für Windows
activate name_of_your_virtualenv
Für diejenigen unter Ihnen, die pipenv verwenden und eine bestimmte Version installieren möchten:
pipenv install --python 3.6
Ich wollte python 2.7.5 als Standardversion unter Centos 7 beibehalten, habe jedoch python 3.6.1 in einer virtuellen Umgebung, die zusammen mit anderen virtuellen Umgebungen in python 2 ausgeführt wird .X
Ich fand den folgenden Link die beste Lösung für die neueste python Version (python 3.6.1) https://www.digitalocean.com/community/tutorial_series/how -zur-Installation-und-Einrichtung-einer-lokalen-Programmierumgebung-für-Python- . Es zeigt die Schritte für verschiedene Plattformen, aber die grundlegenden Schritte sind
Ich habe alle oben genannten Sachen ausprobiert, es hat immer noch nicht funktioniert. Als Brute Force habe ich einfach die Anaconda neu installiert, die Virtualenv neu installiert ... und es hat funktioniert.
Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
100% |████████████████████████████████| 3.5MB 114kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$
In der Windows-Befehlszeile funktionierte Folgendes für mich. Finden Sie zuerst heraus, wo sich Ihre python ausführbaren Dateien befinden:
where python
Dadurch werden die Pfade zu den verschiedenen python.exe auf Ihrem System ausgegeben. Hier waren meine:
C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe
Bei Python3 befand sich dies für mich im ersten Pfad, sodass ich zum Stammordner der Anwendung gehe, in dem ich einen Ordner für die virtuelle Umgebung erstellen möchte. Dann führe ich Folgendes aus, das den Pfad zu meiner ausführbaren Python3-Datei enthält und meine virtuelle Umgebung "venv" nennt:
virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv
Aktivieren Sie als Nächstes die virtuelle Umgebung:
call venv\Scripts\activate.bat
Installieren Sie abschließend die Abhängigkeiten für diese virtuelle Umgebung:
pip install -r requirements.txt
Diese Requirements.txt kann manuell ausgefüllt werden, wenn Sie die für Ihre Anwendung in der virtuellen Umgebung erforderlichen Bibliotheken/Module kennen. Wenn die Anwendung in einer anderen Umgebung ausgeführt wurde, können Sie die Abhängigkeiten automatisch erstellen, indem Sie Folgendes ausführen (CD in den Anwendungsordner in der Umgebung, in der sie ausgeführt wird):
pip freeze > requirements.txt
Sobald Sie die Datei requirements.txt haben, die Sie "eingefroren" haben, können Sie die Anforderungen auf einem anderen Computer oder in einer sauberen Umgebung wie folgt installieren (nachdem Sie eine CD in den Anwendungsordner geschrieben haben):
pip install -r requirements.txt
Führen Sie Folgendes aus, um Ihre python -Version in der virtuellen Umgebung anzuzeigen:
python --version
Dann voila ... Sie haben Ihr Python3 in Ihrer virtuellen Umgebung ausgeführt. Ausgabe für mich:
Python 3.7.2
Ich habe den gleichen Fehler erhalten, weil es einen Konflikt mit der Installation von miniconda3 gibt. Wenn Sie also "which virtualenv" eingeben und miniconda installiert haben und auf diese Installation zeigen, können Sie es entweder entfernen (wenn Sie mir ähnlich sind und nicht umgezogen sind) dazu noch) oder ändern Sie Ihre Umgebungsvariable, um auf die gewünschte Installation zu verweisen.