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:

    virtualenv ~/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 auch pkg-resources in einer ungültigen Version, weshalb dieses Modul nicht in der requirements.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.