Python doit être installé

python --version
python3 --version
sudo apt install python3-pip
python --version
sudo ln -s /usr/bin/python3 /usr/bin/python

Utilisation de flask

lancement (ou installation sur vos machine personnelle)

utiliser pycharm (à l’IUT /opt/pycharm/bin/pycharm.sh et licence server)

créer un lanceur ou utiliser le terminal

la licence


  1. Créer un compte sur le site jetbrains avec votre email de l’IUT comme login
  2. Valider votre compte en cliquant sur le lien dans votre boite mail.
  3. Compléter un formulaire avec vos références d’étudiant.
  4. Activer l’autorisation d’utiliser des licences en cliquant sur le lien dans votre boite mail.

configuration


créer une nouvelle application flask (attention : l’explorateur de fichiers de pycharm a parfois du mal à scanner le contenu du dossier HOME monté en NFS)

création d’un projet flask

utiliser python3 comme interpréteur

projet de base sur pycharm

cette application se présente sous la forme suivante

projet de base sur pycharm



projet de base sur pycharm


python app.py

première application

from flask import Flask, request, render_template, redirect, flash, url_for, abort  
                # application WSGI

# (interface de serveur web python)
# comportements et méthodes d'un serveur web


app = Flask(__name__)    # instance de classe Flask (en paramètre le nom du module)

#app.config["TEMPLATES_AUTO_RELOAD"] = True 

@app.route('/')
@app.route('/hello')
def hello_world():  # put application's code here
    return 'Hello World!<a href="hello">lien hello</a>'

if __name__ == '__main__':
    app.run(debug=True, port=5000)
python app.py

lancer le serveur web ; la boite à outils

hostname -i
ip addr


Créer un fichier launcher.sh avec les droits d’exécution : recopier le contenu ci-dessous dans un terminal de pycharm

touch launcher.sh
chmod u+x launcher.sh

recopier le contenu ci-dessous dans le fichier launcher.sh : voir (documentation)

flask --debug  --app app  run   --host 0.0.0.0
lanceur pycharm

Après avoir récupéré un projet sur GitHub, pensez à utiliser la commande :

chmod u+x launcher.sh


Pour recharger automatiquement une application quand on modifie une vue (template), ajouter la ligne ci-dessous dans votre code:
app.config["TEMPLATES_AUTO_RELOAD"] = True
( documentation - documentation)

Créer un fichier de nom launcher.bat par exemple avec comme contenu :

python -m flask --debug  --app app  run   --host 0.0.0.0

problèmes possibles

adresse(port) déjà utilisée

message d’erreur : “Address already in use”

sur Linux : recherchez les numéros des processus qui utilisent le nom “flask” avec la commande ci-dessous :

ps aux | grep flask

puis avec xxxx ou xxxx est l’ID (première colonne du résultat de la commande précédente) du ou des processus flask à tuer (arrêter), faire

kill -9   xxxx



autre solution : changez le port utilisé par le serveur web

flask --debug  --app app  run   --host 0.0.0.0  --port 5002

problème d’installation (flask non reconnu)

message d’erreur : " option –debug" non reconnue

flask --version
pip install --upgrade Flask
# vérifier si les paquets sont installés
pip list
pip3 show pymysql
pip3 show flask

# installer les paquets dans votre $HOME

pip install flask --break-system-packages
pip install pymysql --break-system-packages



# les paquets sont installés sur à l'IUT /usr/local/lib/python3.11/dist-packages
# les paquets sont installés sur ~/.local/lib/pythonxxxxx sur vos machines linux




annexe : utiliser GitHub ou GitLab

mise en place d’un projet

Dans un terminal :

git clone https://gitlab.com/username/nom_repository.git
cd nom_repository


Tester dans un terminal votre username avec votre_clé

git config credential.helper store


# récupérer les modification des autres dans le repository
git pull

# modifiez le contenu du repository
git add --all
git commit -m "modif projet"
git push


# commande pour revenir en arrière  dans son code si on a oublier de faire un "pull" (dernière version avec un "commit")

git reset --hard HEAD^

# lister les "commits"
git log


.idea
.gitignore
__pycache__
.git
.env

Dans votre home, dans le fichier ~/.git-credentials, vous trouverez le login et la clé

boutons : “pull” “commit” “push”

Utilisation de dotenv

Documentation de dotenv

Commencer par installer le paquet :

pip install python-dotenv

Modifier un peu le début du fichier app.py

#! /usr/bin/python
# -*- coding:utf-8 -*-
from flask import Flask, request, render_template, redirect, flash

app = Flask(__name__)
app.secret_key = 'une cle(token) : grain de sel(any random string)'

from flask import session, g
import pymysql.cursors

import os                                 # à ajouter
from dotenv import load_dotenv            # à ajouter
load_dotenv()                             # à ajouter

def get_db():
    if 'db' not in g:
        g.db =  pymysql.connect(
            host=os.environ.get("HOST"),                # à modifier
            user=os.environ.get("LOGIN"),               # à modifier
            password=os.environ.get("PASSWORD"),        # à modifier
            database=os.environ.get("DATABASE"),        # à modifier
            charset='utf8mb4',
            cursorclass=pymysql.cursors.DictCursor
        )
    return g.db

@app.teardown_appcontext
def teardown_db(exception):
    db = g.pop('db', None)
    if db is not None:
        db.close()

Créez un fichier .env à la racine du projet (au même niveau que app.py)

HOST="localhost"
PASSWORD="secret"
LOGIN="login"
DATABASE="BDD_login"


Sur pythonanywhere, remplacer :

load_dotenv()

par 2 lignes comme celles ci-dessous (voir stackoverflow) :

project_folder = os.path.expanduser('~/sae_s2_2024')  # adjust as appropriate (avec le dossier où se trouve le fichier .env et app.py)
load_dotenv(os.path.join(project_folder, '.env'))

annexes

https://www.nicelydev.com/git



Déploiement continu