Skip to content

Instantly share code, notes, and snippets.

@ccaspers
Last active September 25, 2018 19:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ccaspers/a5bdbc8818f6bf9b54c16c29faadcb97 to your computer and use it in GitHub Desktop.
Save ccaspers/a5bdbc8818f6bf9b54c16c29faadcb97 to your computer and use it in GitHub Desktop.
Virtualenv Tutorial

Virtual Environments

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.

Ein Virtual Environment erzeugen

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

Ein Virtual Environment im Terminal verwenden

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

Ein Virtual Environment in PyCharm verwenden

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. pycharm-settings-interpreter.png)

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:

pycharm-settings-interpreter-filebrowser.png

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.

pycharm-settings-interpreter-pipgui.png

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment