Linux Python

Python – Virtuell Environments

Beim Entwicklen von Python Projekten, setzt man meistens auch zusätzliche Module ein, die zuerst installiert werden müssen. Eine Möglichkeit ist, diese einfach global im Betriebsystem zu installieren. Eine gute Idee ist dies jedoch nicht. Besser ist es, diese direkt an das Projekt zu binden. So kommt man sich auch nicht mit anderen Projekten in die quere und kann unterschiedliche Versionen in unterschiedlichen Projekten einsetzen. Auch dritte können dann einfacher das Projekt bei sich installieren.

Eine Möglichkeit hierzu wäre Docker. Aber auch Python direkt hat was im Angebot, worum es hier geht. Das Virtuelle Environment.

Installation

Mit pip3 muss nur einmalig virtualenv installiert werden:

pip3 install virtualenv

Erzeugen eines Environments

Pro Projekt kann nun die Umgebung erzeugt werden. Dazu wechselt man zunächst in das Projektverzeichnis, um dort das folgende Auszuführen. X wird hier durch die gewünschte Versionsnummer ersetzt. Tab completion hilft:

virtualenv --no-site-packages --distribute -p /usr/bin/python3.X ENV

Mac User finden ihren Python Interpreter in /usr/local/bin. Was nun angelegt wurde ist der Ordner ENV, welcher alle Module und Pakete enthält, welche wir nun installieren. Dazu müssen wir das Environment aber zunächst noch starten.

Verwenden des Environments

Im Projektfolder, führ man folgendes Kommando aus:

source ENV/bin/activate

Ab nun können wir in dieser Umgebung arbeiten. Der Python Interpreter ist nun auch automatisch auf den beim anlegen angegebenen gesetzt und anstelle pip3 kann pip verwendet werden.

Zum beenden des Environments reicht folgendes Kommando:

deactivate

Ein Tipp, den ENV Folder würde ich nicht in die Versionskontrolle des Projektes aufnehmen.

Tipp zu Paketen

Kleiner Tipp, alle Pakete die im Environment mit pip installiert wurden, können einfach angezeigt werden:

pip freeze

Die Ausgabe dieses Kommandos kann ganz einfach in eine Datei, z.B. requirements.txt umgeleitet werden.

Und mit dieser Datei, kann man ein frisches Environment einfacher aufsetzten:

pip install -r requirements.txt

Deploy mit UWSGI

Das Environement kann auch ziemlich einfach mit UWSGI verwendet werden. Notwendig dazu ist eine uwsgi.ini file:

[uwsgi]
plugin = python3
wsgi-file = /var/MEINPROJEKT/app.wsgi
processes = 8
enable-threads = true
callable = app

Sowie ein kleines Script, welches die Application zur Verfügung stellt, Beispielsweise beim Flask (app.wsgi):

#!/usr/bin/python3
activate_this = '/var/MEINPROJEKT/ENV/bin/activate_this.py'.format(domain)
exec(open(activate_this).read(), dict(__file__=activate_this))
import sys,os
sys.path.append("/var/MEINPROJEKT/htdocs")
from application import app

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.