VirtualEnv und Django
Mit Python3 ist die Erstellung einer VirtualEnv-Umgebung vereinfacht worden.
-
Nutzen Sie SSH, um sich mit Ihrem Account auf dem Server anzumelden.
-
Wechseln Sie dort in das Verzeichnis
~/priv
, in dem Ihre privaten bzw. nicht-öffentlichen Daten liegen werden. -
Erstellen Sie nun die VirtualEnv-Umgebung:
python3 -m venv ~/priv/venv
Somit wird im Ordner
~/priv/venv
eine neue Python3-Umgebung erstellt. -
Aktivieren Sie diese VirtualEnv, um damit zu arbeiten:
source ~/priv/venv/bin/activate
Ist dies erfolgreich, so ändert sich der Prompt und zeigt dann die aktive VirtualEnv an:
ssd123@django1:~$ source priv/venv/bin/activate (venv) ssd123@django1:~$
-
Um die Installation Ihrer benötigten Python-Module vornehmen zu können, installieren bzw. aktualisieren Sie zuerst einige System-Bibliotheken:
pip install wheel pip install -U pip
-
Nun können Sie mit
pip
die von Ihnen gewünschten und benötigten Python-Module, beispielsweise Django, installieren:pip install -U Django mysqlclient
-
Bevor Sie mit
deactivate
die VirtualEnv verlassen, empfehlen wir Ihnen, die derzeitig installierten Python-Module aufzuzeichnen:pip freeze | grep -v "pkg-resources" | tee ~/priv/requirements.txt
pip
listet normalerweise auchpkg-resources
in einer ungültigen Version, weshalb dieses Modul nicht in derrequirements.txt
aufgezeichnet wird.Quelle/weitere Informationen: StackOverflow
-
In der
requirements.txt
befinden sich nun alle Pakete mit Versionsstand:Django==2.1 django-debug-toolbar==1.9.1 django-grappelli==2.11.1 django-tinymce==2.8.0 Pillow==5.0.0 pytz==2018.5 sorl-thumbnail==12.4.1 sqlparse==0.2.4 whitenoise==4.1.2
-
Soll zukünftig dieser Versionsstand in einer neuen VirtualEnv wiederhergestellt werden, wird dem
pip install
-Befehl der Pfad zur Datei mitgegeben.pip install -r ~/priv/requirements.txt
Dies erlaubt dann auch den Wechsel der Python-Version von beispielsweise Python 3.5 auf Python 3.7, ohne die Versionen der bisher genutzten Module zu verlieren.
-
Bitte beachten Sie, dass sich nach einem Wechsel der Python-Version auch der Pfad zu den Modulen ändert!
import sys, os sys.path.insert(0, '/var/www/ssd123/priv/project') -sys.path.insert(0, '/var/www/ssd123/priv/venv/lib/python3.5/site-packages') +sys.path.insert(0, '/var/www/ssd123/priv/venv/lib/python3.7/site-packages') from django.core.wsgi import get_wsgi_application os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.production' application = get_wsgi_application()
Bei Fragen steht Ihnen unser Support gerne zur Verfügung.