A Virtual Environment is a tool to keep the dependencies required by different projects in separate places, by creating virtual Python environments for them. It solves the “Project X depends on version 1.x but, Project Y needs 4.x” dilemma, and keeps your global site-packages directory clean and manageable. - The Hitchhiker’s Guide to Python!
Virtual Environments werden also dazu genutzt um verschiedene Softwareprojekte und ihre Abhängigkeiten voneinander zu isolieren. Ein netter nebeneffekt ist, das Installation aus dem Python Package Index (pip) ohne Administratorrechte erfolgen können, weil die Pakete im Verzeichnis des Virtual Environments installiert werden.
Jedes Virtual Environment hat seine eigenen site-packages
sowie pip
- und python
-Kommandos. Dabei wird der Interpreter nicht jedes neu installiert, sondern über Symlinks verknüpft.
Das Kommando virtualenv
ist auf den Poolrechnern vorhanden und kann verwendet werden, um neue
Virtual Environments zu erzeugen. Zwei Konventionen sind üblich um Environments zu verwalten.
Entweder wird das Environment im Wurzelverzeichnis des jeweiligen Projekts angelegt, oder im Home-Verzeichnis in einem Unterordner mit dem Namen virtualenvs
.
Der zweite Weg wird im Folgenden gewählt.
$ cd ~ # ins Homeverzeichnis wechseln
$ mkdir virtualenvs # Ordner erzeugen
$ cd virtualenvs # Ordner betreten
$ virtualenv web # Virtualenv mit dem Namen web anlegen
New python executable in /home/master/ccasp002/virtualenvs/web/bin/python
Installing setuptools, pip, wheel...done.
virtualenv
verwendet den Standardinterpreter des Systems. Um ein Virtual Environment für eine bestimmte Python Version zu erzeugen kann der Parameter -p path/to/python
verwendet werden. Zur expliziten Verwendung von Python 2 kann folgendes Kommando verwendet werden:
$ virtualenv -p python2 web2
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/master/ccasp002/virtualenvs/web2/bin/python2
Also creating executable in /home/master/ccasp002/virtualenvs/web2/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
oder folgendes für Python 3:
$ virtualenv -p python3 web3
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/master/ccasp002/virtualenvs/web3/bin/python3
Also creating executable in /home/master/ccasp002/virtualenvs/web3/bin/python
Installing setuptools, pkg_resources, pip, wheel...done
Im Order ~/virtualenvs/web
wurde durch die gezeigte Befehlsfolge ein neues Virtual Environment angelegt. Um es zu verwenden muss es zuvor aktiviert werden.
$ cd ~/virtualenvs/web # zum Environment navigieren
$ source bin/activate # aktivieren
(web) $ # aktiviertes Environment steht als Präfix im Prompt
Um das Virtual Environment zu verlassen muss nur das Terminal geschlossen, oder das deactivate
Kommando ausgeführt werden.
(web) $ deactivate
$ # Environment nicht mehr aktiv, Präfix ist verschwunden
Um Bibliotheken und Pakete zu installieren kann das pip
-Kommando verwendet werden:
(web) bash-4.3$ pip install flask
Collecting flask
Using cached Flask-0.12.2-py2.py3-none-any.whl
Collecting itsdangerous>=0.21 (from flask)
Collecting click>=2.0 (from flask)
Using cached click-6.7-py2.py3-none-any.whl
Collecting Werkzeug>=0.7 (from flask)
Using cached Werkzeug-0.12.2-py2.py3-none-any.whl
Collecting Jinja2>=2.4 (from flask)
Using cached Jinja2-2.9.6-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.4->flask)
Installing collected packages: itsdangerous, click, Werkzeug, MarkupSafe, Jinja2, flask
Successfully installed Jinja2-2.9.6 MarkupSafe-1.0 Werkzeug-0.12.2 click-6.7 flask-0.12.2 itsdangerous-0.24
PyCharm unterstüzt Virtualenvs indem der korrekte Project Interpreter ausgewählt wird. In der Regel muss dieser zuerst angelegt werden.
Zur Konfiguration File -> Settings
aufrufen und nach Project Interpreter
suchen.
Danach auf das Zahnrad klicken und Add Local
auswählen. Daraufhin öffnet sich ein Filebrowser in dem nun der Python Interpreter des gewünschten Virtual Environments ausgewählt werden muss:
Siehe auch: PyCharm Hilfe - Virtual Environment hinzufügen
PyCharm ist ebenfalls in der Lage, Pakete zu installieren. In den Einstellungen des Project Interpreters kann per Klick auf das Grüne Pluszeichen ein Fenster zur Suche verfügbaren Paketquellen aufgerufen werden.