python
est présentpython --version
python3 --version
python
est :sudo apt install python3-pip
python --version
python3 --version
affiche une version mais pas la commande python --version
, créer un lien symbolique de python
à python3
sudo ln -s /usr/bin/python3 /usr/bin/python
utiliser pycharm (à l’IUT /opt/pycharm/bin/pycharm.sh
et licence server
)
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)
utiliser python3 comme interpréteur
cette application se présente sous la forme suivante
static
contient tous les éléments (contenus) dit “static” du site : images, fichiers CSS, fichiers javascript utilisé par les pages HTML ….)
python app.py
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
= Flask(__name__) # instance de classe Flask (en paramètre le nom du module)
app
#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__':
=True, port=5000) app.run(debug
python app.py
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
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
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
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
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
Avec Pycharm : ouvrir un projet avec comme dossier principal celui où se trouve le fichier app.py
(important)
Créer un fichier .gitignore
avec comme contenu (ça évitera de mettre sur le dépôt les fichiers ou dossiers indésirables):
.idea
.gitignore
__pycache__
.git
.env
Dans votre home, dans le fichier ~/.git-credentials
, vous trouverez le login et la clé
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
= Flask(__name__)
app = 'une cle(token) : grain de sel(any random string)'
app.secret_key
from flask import session, g
import pymysql.cursors
import os # à ajouter
from dotenv import load_dotenv # à ajouter
# à ajouter
load_dotenv()
def get_db():
if 'db' not in g:
= pymysql.connect(
g.db =os.environ.get("HOST"), # à modifier
host=os.environ.get("LOGIN"), # à modifier
user=os.environ.get("PASSWORD"), # à modifier
password=os.environ.get("DATABASE"), # à modifier
database='utf8mb4',
charset=pymysql.cursors.DictCursor
cursorclass
)return g.db
@app.teardown_appcontext
def teardown_db(exception):
= g.pop('db', None)
db 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) :
= os.path.expanduser('~/sae_s2_2024') # adjust as appropriate (avec le dossier où se trouve le fichier .env et app.py)
project_folder '.env')) load_dotenv(os.path.join(project_folder,
https://www.nicelydev.com/git