Infra Society Bibliothèque

Chiffrer un projet d'énergie avec quatre dépôts GitHub gratuits

Quatre bibliothèques libres, installées sur ton poste en vingt minutes, pour remplacer les hypothèses de coin de table par des séries calculées.

RepèreCe que tu vas savoir faire

Sortir un profil de production solaire ou éolien à l'heure, faire tourner un réseau simplifié et voir ce qu'il coûte à l'heure la plus tendue. Chaque outil a sa commande d'installation, son code à copier-coller et ses réglages. Et si tu ne codes pas, le prompt Claude Code fait le travail.

La fiche

DépôtCe qu'il calculeÉtoilesLa doc
PyPSARéseau, dispatch, investissement2 148docs.pypsa.org
pvlibProduction solaire, heure par heure1 667pvlib docs
atliteMétéo transformée en gisement401atlite docs
windpowerlibUne éolienne ou un parc396windpowerlib docs

Nombre d'étoiles relevé sur GitHub le 16 septembre 2026.

PrérequisÀ faire une seule fois

  • Python 3.11 ou plus récent (python.org)
  • Un environnement isolé : python3 -m venv .venv && source .venv/bin/activate
  • Pour PyPSA, un solveur gratuit : pip install highspy
  • Pour atlite, un compte gratuit au Climate Data Store de Copernicus (météo ERA5)
  • Pas envie de coder ? Va directement au prompt Claude Code, en bas de page : il installe tout.

1PyPSA, le système entier

Page d'accueil de pypsa.org, avec les boutons Get Started et GitHub Repository
Le site de PyPSA, le 16 septembre 2026.

À quoi ça sert. Poser un réseau (nœuds, lignes, moyens de production, charges) et demander à un solveur ce qui tourne, à quel coût, heure par heure. C'est l'outil qui répond à « et si on ajoutait 40 MW de solaire ici ? ».

1Installe

pip install pypsa highspy

2Colle ce code

import pypsa

n = pypsa.Network()
n.add("Bus", "poste")
n.add("Load", "site", bus="poste", p_set=100)     # 100 MW appelés
n.add("Generator", "reseau", bus="poste",
      p_nom=100, marginal_cost=20)                 # 20 €/MWh
n.optimize()
print(n.objective)                                 # le coût du dispatch

3Règle-le

AstuceCommence petit

Une semaine de pointe d'abord, pas une année. Le modèle tourne en deux secondes, tu vois tout de suite si tes hypothèses tiennent, et tu passes à l'année quand la structure est bonne :

import pandas as pd
n.set_snapshots(pd.date_range("2026-01-12", periods=168, freq="h"))

2pvlib, le solaire heure par heure

Galerie d'exemples de la documentation pvlib, avec des graphiques de rendement de modules
La galerie d'exemples de pvlib, avec ses graphiques de rendement.

À quoi ça sert. Calculer ce qu'une installation photovoltaïque produit réellement sur un site : position du soleil, inclinaison, température des modules, pertes. La bibliothèque de référence, née chez Sandia.

1Installe

pip install pvlib pandas

2Colle ce code

import pandas as pd
from pvlib.location import Location

site = Location(43.30, 5.37, tz="Europe/Paris", altitude=10)   # Marseille
heures = pd.date_range("2026-06-21", periods=24, freq="h", tz="Europe/Paris")
ciel_clair = site.get_clearsky(heures)
print(ciel_clair.head())                                        # ghi, dni, dhi

3Règle-le

AttentionLe ciel clair n'est pas la production

Il donne le plafond théorique. Passe à PVGIS dès que tu chiffres pour de vrai :

from pvlib.iotools import get_pvgis_hourly
donnees, meta = get_pvgis_hourly(43.30, 5.37, start=2020, end=2020)

3atlite, la météo devient un gisement

Documentation d'atlite : Convert weather data to energy systems data
La documentation d'atlite, page d'accueil.

À quoi ça sert. Transformer des champs météo (vent, rayonnement, température) en séries de production sur une zone entière. Répond à « combien produirait un parc n'importe où dans cette région ? ».

1Installe

pip install atlite

2Colle ce code

import atlite

zone = atlite.Cutout(path="sud-2023.nc", module="era5",
                     x=slice(3, 7), y=slice(42.5, 45),   # la fenêtre géographique
                     time="2023-06")
zone.prepare()                                           # télécharge la météo
facteur = zone.wind(turbine="Vestas_V112_3MW", capacity_factor=True)

3Règle-le

AstuceGagne une heure

Le premier prepare() peut prendre une heure et plusieurs gigaoctets. Lance-le sur un mois avant l'année, et garde le fichier : il se relit sans retélécharger.

4windpowerlib, une machine, un parc

Le dépôt GitHub wind-python/windpowerlib
Le dépôt windpowerlib sur GitHub.

À quoi ça sert. Descendre au niveau de la machine : courbe de puissance, hauteur de moyeu, extrapolation du vent, effet de sillage. Quand atlite donne l'ordre de grandeur régional, windpowerlib donne le chiffre d'un projet précis.

1Installe

pip install windpowerlib

2Colle ce code

from windpowerlib import WindTurbine

machine = WindTurbine(turbine_type="E-126/4200", hub_height=135)
print(machine.power_curve.head())      # la courbe de puissance du catalogue

3Va plus loin

Passe du vent mesuré à la puissance produite avec la chaîne complète :

from windpowerlib import ModelChain
# meteo : ton tableau vent / température
production = ModelChain(machine).run_model(meteo).power_output

Pour un parc, WindFarm agrège plusieurs machines avec leurs pertes. Et règle hub_height au mètre près : dix mètres changent le résultat de plusieurs pour cent.

5Tu ne codes pas ? Le prompt Claude Code

Colle ce texte dans Claude Code (ou Cursor), dans un dossier vide, et remplace ce qui est entre [crochets] :

Installe pvlib et pypsa dans un environnement virtuel.
Calcule la production horaire d'une centrale solaire de [12 MWc] à [ta ville], sur une année, avec les données PVGIS.

Puis construis un réseau PyPSA à un nœud : cette centrale, une charge industrielle de [8 MW] constante, et le réseau public à [95 €/MWh].

Dis-moi combien d'heures par an la centrale couvre la charge, et ce que ça change sur la facture. Donne-moi le code, les hypothèses, les sources des données, et trace un graphique.

AstucePars d'un exemple officiel

Ouvre d'abord la doc (dernière colonne de la fiche), repère l'exemple le plus proche de ton cas, copie son lien et colle-le dans le prompt. Claude part de l'exemple au lieu d'inventer.

6Avant de mettre ça dans un livrable

7Questions fréquentes

Faut-il un gros ordinateur ? Non pour pvlib et windpowerlib. atlite demande quelques gigaoctets de disque. PyPSA dépend de la taille du réseau : un nœud est instantané, un pays entier demande de la mémoire.

C'est gratuit ? Oui, les quatre sont open source (MIT ou BSD-3), usage commercial compris, à condition de garder la mention de copyright.

Par lequel commencer ? pvlib si tu as un site précis à chiffrer. PyPSA si ta question porte sur l'équilibre et le coût du système.