Meetup Python Lyon 2026 - 18 mars 2026
MkDocs est un générateur de sites statiques orientés documentation de projet.
MkDocs créé par Tom Christie pour la documentation de Django REST Framework
Installer MkDocs dans un environnement virtuel, isolé des packages systèmes.
pip install mkdocsmkdocs new my-sitecd my-sitemkdocs serveFonctions intégrées

Le contenu du projet généré est simple.
Fichier de configuration : mkdocs.yml
Dossier docs pour les fichiers sources
Page d’accueil : index.md
# Welcome to MkDocs
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
## Commands
* `mkdocs new [dir-name]` - Create a new project.
* `mkdocs serve` - Start the live-reloading docs server.
* `mkdocs build` - Build the documentation site.
* `mkdocs -h` - Print help message and exit.
## Project layout
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.Ajouter de nouvelles pages et créer un menu de navigation qui sera affiché dans l’en-tête du site.
Configurer ce menu avec le paramètre nav dans le fichier mkdocs.yml :

Note
One of the most confusing aspects of using Markdown is that practically every Markdown application implements a slightly different version of Markdown. 1
MkDocs utilise la librairie Python-Markdown qui dispose de plusieurs extensions de syntaxe 2
Jupyter Book et Sphinxthème par défaut : thème mkdocs
basé sur Bootstrap
clone du thème par défaut du service
Read the Docs
Déclaration du thème Read the Docs dans le fichier mkdocs.yml

La commande mkdocs build génère les fichiers statiques à publier dans le dossier site :
Copier les fichiers générés vers votre serveur dédié 1 (scp, rsync, …) :
site
├── 404.html
├── conferences
│ ├── logo-pyconfr-2025.svg
│ ├── logo-pyladiescon.svg
│ ├── pyconfr
│ │ └── index.html
│ └── pyladiescon
│ └── index.html
├── css
│ ├── fonts
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.svg
│ │ ├── …
│ │ └── Roboto-Slab-Regular.woff2
│ ├── theme.css
│ └── theme_extra.css
├── img
│ └── favicon.ico
├── index.html
├── js
│ ├── html5shiv.min.js
│ ├── jquery-3.6.0.min.js
│ ├── theme_extra.js
│ └── theme.js
├── search
│ ├── lunr.js
│ ├── main.js
│ ├── search_index.json
│ └── worker.js
├── search.html
├── sitemap.xml
└── sitemap.xml.gz
8 directories, 37 filesRead the Docs est la plateforme d’hébergement de référence des documentations Python.
MkDocs, Sphinx, Jupyter Book, …Quelques informations
Créée en 2010, le code de la plateforme est open source avec ~460 contributeurices.
Read the Docs héberge 80 000 projets open source, sert 55 millions de pages et 40 TB de documentation par mois. Il a 100 000 utilisateurs avec une équipe salariée de seulement 4 personnes.
Voir les comparaisons de Read the Docs avec d’autres plateformes : GitHub Pages, GitBook, Cloudflare Pages et Netlify
Read the Docs recommande de s’authentifier à partir d’une plateforme d’hébergement de code (GitHub, GitLab, Bitbucket) pour faciliter l’import et la configuration des projets.
Vous devez placer un fichier de configuration, nommé .readthedocs.yaml, à la racine de votre dépôt git pour configurer la génération de la documentation sur la plateforme.
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the OS, Python version, and other tools you might need
build:
os: ubuntu-24.04
tools:
python: "3.13"
# Build documentation with Mkdocs
mkdocs:
configuration: mkdocs.yml
# Optionally, but recommended,
# declare the Python requirements required to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txtUne fois importée vous avez le tableau de bord suivant pour votre projet :
Déploiement sur GitHub Pages en tant que site “Project Pages”.
La commande mkdocs gh-deploy
gh-pages, uniquement avec les fichiers générés$ mkdocs gh-deploy
INFO - Cleaning site directory
INFO - Building documentation to directory: /home/fconil/Progs/python/mkdocs-uv/my-mkdocs-site-on-ghpages/site
INFO - Documentation built in 0.11 seconds
INFO - Copying '/home/fconil/Progs/python/mkdocs-uv/my-mkdocs-site-on-ghpages/site' to 'gh-pages' branch and pushing to GitHub.
Énumération des objets: 52, fait.
Décompte des objets: 100% (52/52), fait.
Compression par delta en utilisant jusqu'à 4 fils d'exécution
Compression des objets: 100% (35/35), fait.
Écriture des objets: 100% (38/38), 802.00 Kio | 4.92 Mio/s, fait.
Total 38 (delta 7), réutilisés 0 (delta 0), réutilisés du pack 0
remote: Resolving deltas: 100% (7/7), completed with 3 local objects.
To github.com:fconil/my-mkdocs-site-on-ghpages.git
c88cc7b..9104959 gh-pages -> gh-pages
INFO - Your documentation should shortly be available at: https://fconil.github.io/my-mkdocs-site-on-ghpages/
Material for MkDocs créé par Martin Donath en 2015
thème moderne, adaptatif 1, basé sur Material Design 2
utilisé par plus de 50 000 projets GitHub 3
excellent tutoriel de James Willett
documentation claire
pip install mkdocs par : pip install mkdocs-materialInstallation
pip install mkdocs-material installe les dépendances nécessaires : MkDocs, Markdown, Pygments et Python Markdown Extensions : (une collection d’extensions de Python Markdown)
site_url dans mkdocs.yml :site_url
Material for MkDocs recommande de définir site_url car MkDocs fait l’hypothèse que le site est hébergé à la racine du domaine. Certains plugins nécessitent que la propriété soit définie, donc il faut toujours la spécifier.
Quelques options de configuration de la navigation :
navigation.tabs : afficher les titres de premier niveau dans le bandeau 1toc.integrate : intégrer la table des matières à la barre de navigation de gauchenavigation.instant : chargement instantané → les clics sur les liens internes sont interceptés et gérés via XHR 2 pour éviter de recharger toute la pagenavigation.tracking : ajouter l’ancre courante du document à l’URL de la barre d’adressenavigation.top : affichage d’un bouton “back-to-top”
Possibilité de choisir parmi les 1000 fontes Google ou d’utiliser une fonte hébergée localement, voir Changing the fonts

theme:
palette:
# Palette toggle for light mode (default)
- scheme: default
primary: light blue
accent: pink
toggle:
icon: material/weather-night
name: Dark mode
# Palette toggle for dark mode (slate)
- scheme: slate
primary: teal
accent: deep orange
toggle:
icon: material/weather-sunny
name: Light modeVoir Changing the colors
Exemple :
primary et accentAjout d’un lien vers le dépôt git avec des informations (versions, stars, forks) dans le header :
Intégrer des liens dans le footer sous forme d’icônes identifiée vers différentes plateformes :
Material for MkDocs permet d’utiliser plus de 10 000 icônes et emojis.
Dans mkdocs.yml, déclarer :
attr_list (extension Python Mardown)pymdownx.emoji (extension Python Mardown Extensions)Dans la page Markdown insérer le shortcode à afficher :
Rendu : ![]()
Dans mkdocs.yml, déclarer 2 extensions Python Mardown :
Dans la page Markdown :
<div class="grid cards" markdown>
- :material-clock-fast:{ .lg .middle } __Set up in 5 minutes__
---
Install [`mkdocs-material`](#) with [`pip`](#) and get up
and running in minutes
- :fontawesome-brands-markdown:{ .lg .middle } __It's just Markdown__
---
Focus on your content and generate a responsive and searchable static site
</div> Dans mkdocs.yml, déclarer l’extension Python Mardown Extensions suivante :
Dans la page Markdown, déclarer le diagramme Mermaid :
``` mermaid
---
title: Déploiement MkDocs sur GitHub Pages
---
gitGraph
commit
commit
commit
branch gh-pages
commit
switch main
commit
commit
switch gh-pages
commit
```

mkdocs new my-sitemkdocs servemkdocs build et mkdocs gh-deploy
4 articles de blogs détaillent et expliquent les évolutions envisagées, puis l’arrêt de Material for MkDocs et enfin la création d’un nouveau framework Zensical :
Against recent industry trends with companies moving away from core ideas of Open Source, we are doubling down on our commitment to Open Source because we believe it’s at the heart of the value proposition of our work and the docs as code approach.
L’article de blog de Material for MkDocs du 18 février 2026, mis à jour le 3 mars, évoque l’annonce d’une version MkDocs 2.0 non rétro-compatible

Sur les projets très utilisés, les réactions peuvent être blessantes :
Version 3.0 de Flask : It’s unfortunate that the Flask team leader has taken my blog post from the other day very personally and considers it an attack on him and the team, which is certainly not … I can’t apologize for exposing something that I believe is an actual problem that needs to be addressed …
Python 2 ⇒ Python 3 : He was a valued community member. And at the time I was actually quite surprised that he was so viciously attacking Python 3.
walrus operator (PEP 572) : I was the BDFL and I accepted the PEP. And the next morning I woke up and I felt miserable because of all the attacks that had happened before. I sat down at my computer, wrote a short email, and hit send wherein I announced that I resigned.
I don’t want to continue allowing an online environment with such an absurdly skewed gender representation. I find it intensely unwelcoming, and it’s not reflective of the type of working environments I value.
Do you want to get more involved in open source?
Participation in open source projects almost inevitably involves human interaction … The more involved we get, the more direct and indirect relationships we’re likely to build, and the more emotional energy we may need to devote to maintaining them.
La plupart des licenses libres spécifient : software is provided « as is » et Fitness for purpose is disclaimed. Malgré tout, les mainteneur·ses font parfois face à des demandes irréalistes
Toxic behaviour
… many (communities) are just genuinely small groups of like minded folks that have been lucky enough not to encounter a notable interpersonal conflict.
Yet, more generally, though, racism, sexism, and other flavors of discrimination are not truly solved problems (anywhere ?)
Bien sûr, iel présente aussi tous les aspects positifs de la contribution au logiciel libre.
ProperDocs est un fork très récent de MkDocs 1.
$ mkdocs build -c
│ ⚠ Warning from the Material for MkDocs team
│
│ MkDocs 2.0, the underlying framework of Material for MkDocs,
│ will introduce backward-incompatible changes, including:
│
│ × All plugins will stop working – the plugin system has been removed
│ × All theme overrides will break – the theming system has been rewritten
│ × No migration path exists – existing projects cannot be upgraded
│ × Closed contribution model – community members can't report bugs
│ × Currently unlicensed – unsuitable for production use
│
│ Our full analysis:
│
│ https://squidfunk.github.io/mkdocs-material/blog/2026/02/18/mkdocs-2.0/
----------------------------------------------------------------
WARNING: MkDocs may break support for all existing plugins and themes soon!
The owner of MkDocs has completely abandoned maintenance of the project, and instead is planning to publish a "version 2" which will not support
any existing themes, plugins or even your configuration files. This v2 may eventually replace what you download with `pip install mkdocs`,
suddenly breaking the build of your existing site.
To avoid these risks, switch to ProperDocs, a continuation of MkDocs 1.x and a drop-in replacement that supports your current MkDocs setup.
Simply install it with `pip install properdocs` and build your site with `properdocs build` instead of the MkDocs equivalents.
For more info visit https://github.com/ProperDocs/properdocs/discussions/33 and https://properdocs.org/
(This warning was initiated by one of the plugins that you depend on.)
----------------------------------------------------------------Zensical is our effort to overcome the technical limitations of MkDocs
mkdocs.yml, allowing you to build your existing project with minimal changesDisco. In early 2026, we’ll be releasing Disco as a standalone Open Source project.Dans cette interview, Zensical - a modern static site generator, Martin Donath explique :
J’ai basculé facilement mes pages personnelles vers le nouveau framework Zensical
Le fichier de configuration, zensical.toml, est généré avec différentes options, activées ou non et de nombreux commentaires 1. J’ai supprimé mon fichier mkdocs.yml.
Voici les paramètres que j’ai modifiés ou désactivés (c.a.d mis en commentaires) pour retrouver l’apparence de mon site :
[project]
site_name = "Françoise CONIL"
site_description = "Pages personnelles"
site_author = "Françoise CONIL"
site_url = "https://perso.liris.cnrs.fr/francoise.conil/"
# copyright = """
# Copyright © 2026 The authors
# """
nav = [
{ "À propos" = "index.md" },
{ "Présentations" = "talks.md" },
{ "Supports" = "supports.md" },
{ "ESR" = "esr.md" },
{ "Associations" = "associations.md" },
{ "Médiation" = "mediation.md" },
{ "Diversité" = "diversity.md" }
]
extra_css = ["stylesheets/extra.css"]variant = "classic" 1 permet de revenir à l’apparence Material for MkDocs
J’ai juste modifié les icônes pour la bascule mode clair / sombre :
Enfin, j’ai ajouté les icônes de « réseaux sociaux » dans le footer :
[[project.extra.social]]
icon = "fontawesome/brands/gitlab"
link = "https://gitlab.liris.cnrs.fr/users/fconil/projects"
[[project.extra.social]]
icon = "fontawesome/brands/github"
link = "https://github.com/fconil"
[[project.extra.social]]
icon = "simple/mastodon"
link = "https://framapiaf.org/@fcodvpt"
[[project.extra.social]]
icon = "material/linkedin"
link = "https://www.linkedin.com/in/fran%C3%A7oise-conil-a0357752/"Et c’est tout, la structure et le contenu de mon dossier docs sont inchangés !!!
Je n’ai pas eu besoin de déclarer des extensions ou de package complémentaire pour les icônes / emojis, les grilles, …
J’ai cru qu’elles n’étaient plus nécessaires : ce n’est pas exactement le cas.
En effet, si votre fichier de configuration ne contient pas de déclaration d’extension, Zensical utilise une configuration par défaut
Attention en cas d’ajout ou de modification
Si vous ajoutez une extension ou si vous modifiez la configuration des extensions par défaut, vous devez alors configurer toutes les extensions que vous utilisez !
Material for MkDocs / Zensical revendiquent le créneau des documentations techniques
Une documentation technique de référence peut être produite avec mkdocstrings 1 2 3 4.
pip install 'mkdocstrings[python]'API Reference
Créer une référence d’API directement avec mkdocstrings semble laborieux, mais mkdocs-api-autonav est très simple.
Supporting multi-language sites in MkDocs is the most requested feature on our discussion board and in conversations with users, yet it presents significant challenges, as MkDocs does not natively support it.
Multi-language support has been a source of frustration for users of almost all static site generators. Zensical aims to address these challenges by providing a robust framework for managing translations, language-specific content, and fallback mechanisms.
Là aussi, voir la mise en oeuvre de documentation technique multi-langues avec la documentation de FastAPI

Important
La version de MkDocs qui sera installée par pip sera beaucoup plus récente que la version disponible dans vos paquets système.
