Skip to content

Flask Projekt auf einem anderen Rechner installieren

Python3
  • So als Hobby Entwickler hat man manchmal harte Aufgaben 🙂

    Ich habe eines meiner Flask-Projekte mal auf meinem Testrechner versuchsweise installiert um zu schauen, ob das klappt und wo es überall hakt.

    Repo clonen

    Mein Projekt liegt auf gitlab.com und ist nicht privat. Somit ist der Zugriff nicht trivial. Man benötigt einen Access Token, den man sich folgendermaßen erstellen kann.

    Man klickt auf das Icon und dann auf Preferences. Danach auf Access Tokens. Dort erstellt man sich einen.

    Bevor man das Projekt holt, legt man einen Ordner an und wechselt in dieses Verzeichnis. Dann kann man sich das Projekt holen.

    git clone <Repo-URL>
    

    Danach wird man nach dem Benutzer und dem Token gefragt. Um diese Abfrage in Zukunft zu verhindern, kann man folgenden Git Befehl benutzen.

    git config --global credential.helper store
    

    Ok, nun war das Repo auf meinem Rechner.

    Virtuelle Umgebung

    Um mit Python und seinen ganzen Paketen vernünftig arbeiten zu können, benötigt man eine virtuelle Umgebung. Stellt Euch das bitte wie einen Container vor, ein installiertes Paket liegt nur dort und ist für das Hauptsystem meines Rechners nicht vorhanden. Es gibt mehrere Möglichkeiten das zu verwalten, ich mache das wie folgt. Wir befinden uns in dem geclonten Verzeichnis.

    python3.11 -m venv .venv
    

    Damit wird die virtuelle Umgebung angelegt. Dazu wird automatisch der Ordner .venv erzeugt. Wenn man mal Probleme hat, kann man diesen auch löschen und von vorne beginnen.

    Diese Umgebung muss aktiviert werden.

    source .venv/bin/activate
    

    Auf der Kommandozeile wird das jetzt angezeigt, das man sich in der virtuellen Umgebung befindet. Das ist sehr unterschiedlich von Distribution zu Distribution und auch abhängig davon welche Konsole man benutzt.

    Python Module

    Wenn man jetzt die Anwendung mit

    python app.py
    

    startet, bekommt man eine Fehlermeldung.

    ModulNotFoundError: No module named 'flask'
    

    Ok, da wir uns in einer virtuellen Umgebung befindet, sind dort keinerlei Module installiert. Das heißt, wir müssen das jetzt nachholen. Dazu habe ich auf dem Entwicklungsrechner folgenden Befehl benutzt.

    pip freeze > requirements.txt
    

    Dieser Befehl schaut nach, welche Module installiert sind und erzeugt eine Liste. Ein Auszug

    amqp==5.2.0
    appdirs==1.4.4
    argon2==0.1.10
    argon2-cffi==23.1.0
    argon2-cffi-bindings==21.2.0
    asgiref==3.7.2
    asttokens==2.4.1
    async-timeout==4.0.3
    

    Diese Datei befindet sich jetzt innerhalb des Repositorys. Aufpassen, bei mir war das noch unter 'Unversioned Files' was mir doch ein paar Probleme bereitet hatte.

    Ok, wie installieren wir jetzt die Module? Mit

    pip install -r requirements.txt
    

    werden die dann alle installiert. Danach sollte das Projekt laufen.

    Andere Abhängigkeiten

    Mein Projekt nutzt selbst signierte Zertifikate für den Webbrowser, der die Anwendung anzeigt.

    ###############################################
    # Main loop
    ###############################################
    
    if __name__ == "__main__":
        app.run(debug=True, ssl_context=('cert.pem', 'key.pem'))
    

    Die kann man mit folgendem Befehl eben erzeugen.

    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
    

    Danach war das auch erledigt. Ein weitere Abhängigkeit war das Redis Datenbank Passwort. Dieses habe ich in einer .env abgelegt. Inhalt

    REDIS_PASSWORD = '<PASSWORD>'
    

    Danach lief die Anwendung. Zu dem Redis Datenbank Problem, was mir dann aufgefallen ist, gibt es einen extra Beitrag.

    Vorsicht

    Das ist so nicht für den produktiven Einsatz gedacht.

    debug=True
    

    Da fehlt noch einiges für, aber das ist hier auch nur ein Entwicklungsrechner.