Gestion des données utilisées pas l’application Ecobalyse.
Vous devez disposer d’un environnement NodeJS 14+ et npm
pour l’exécution des scripts et le formattage des fichiers JSON. Pour les scripts disposer de uv qui se chargera d’installer python et les dépendances requises sur votre machine.
Les variables d'environnement suivantes doivent être définies (vous pouvez utiliser un fichier .env
pour cela, voir l’exemple .env.sample
) :
ECOBALYSE_OUTPUT_DIR
: l'emplacement où les fichiers seront exportés, typiquement le dépôt public/home/user/ecobalyse/public/data
. Une copie locale des impacts non détaillés sera gardée danspublic/data/
par défaut.PYTHONPATH
: si vous souhaitez utiliser les scripts Python directement sans passer par npm, assurez-vous d’ajouter le répertoire courant à votre PATH python (export PYTHONPATH=.
)
Nous utilisons dynaconf pour gérer la configuration. Toutes les variables présentes dans settings.toml
peuvent être surchargées sur le principe du 12-factor application guide en utilisant le prefixe ECOBALYSE_
. Si par exemple vous voulez désactiver l’export dans le répertoire public/
local vous pouvez exporter ECOBALYSE_LOCAL_EXPORT=False
.
Vous devrez préparer les bases de données à importer, elle ne font pas partie du dépôt :
- Agribalyse : compressé dans un fichier
AGB3.1.1.20230306.CSV.zip
dans un dossierdbfiles/
au dessus du dépôt - Autres bases alimentaire : consultez les noms de fichier dans
import_food.py
- Ecoinvent : décompressé dans un dossier
ECOINVENT3.9.1
dans ce même dossier
Par défaut, Brightway stocke les données dans ~/.local/share/Brightway3/
. Il est fortement recommandé de configurer la variable d’environnement BRIGHTWAY2_DIR
pour mettre les données dans le répertoire où vous souhaitez (le répertoire doit exister, Brightway ne le créera pas à votre place). Si vous souhaitez utiliser docker avec la méthode ci-dessous et souhaitez partager les données Brightway entre votre docker et le Brightway de votre machine, configurez la variable de cette manière :
export BRIGHTWAY2_DIR=$PWD/.docker/brightway
Pour importer toutes les bases :
npm run import:all
Pour exporter les fichiers :
npm run export:all
Pour lancer jupyter
:
uv run jupyter lab
- Installez
docker
etmake
- Si vous êtes sur Mac avec architecture ARM, affectez 6Go de RAM à Docker dans Docker Desktop : Settings → Ressources → Advanced → Memory = 6G
- Lancez
make
ce qui va successivement :- construire l'image docker ;
- importer les bases de données dans le projet
default
de Brightway ; - exporter les données json utilisées côté front-end, qui pourront ensuite être commitées.
Le processus entier prend environ 1h. En cas de problème vous pouvez redémarrer de zéro en faisant
d'abord un make clean_data
(qui supprime le volume docker).
make image
: pour construire l'image docker choisiemake import_food
: pour importer les bases de données alimentaire dans Brightway. Assurez-vous d'avoir les bon fichiers de données dansdbfiles/
au dessus du dépôtmake import_ecoinvent
: pour importer Ecoinvent 3.9.1. dans Brightway. Assurez-vous d'avoir le bon dossier de données dansdbfiles/
au dessus du dépôtmake import_method
: pour importer EF 3.1 adapted dans Brightway. Assurez-vous d'avoir le bon fichier de données dansdbfiles/
au dessus du dépôtmake export_food
: pour exporter les json pour le builder alimentairemake delete_database DB=<dbname>
: pour supprimer une base de données (Ex avec espace: make delete_database DB="Ecoinvent\ 3.9.1")make delete_method
: pour supprimer la méthode EF3.1make sync_datapackages
: lance un fix parfois nécessaire pour la synchro brightwaymake import
: lance toutes les commandes d'importmake export
: lance toutes les commandes d'exportmake shell
: lance un shell bash à l'intérieur du conteneurmake python
: lance un interpréteur Python à l'intérieur du conteneurmake jupyter_password
: définit le mot de passe jupyter. Doit être lancé avant son démarrage.make start_notebook
: lance le serveur Jupyter dans le conteneur. Peut être précédé du n° de port Jupyter: exJUPYTER_PORT=8889
make stop_notebook
: arrête le serveur Jupyter donc aussi le conteneurmake clean_data
: supprime toutes les données (celles de brightway et jupyter mais pas les json générés)make clean_image
: supprime l'image dockermake clean
: lanceclean_data
etclean_image
Vous pouvez entrer dans le conteneur avec make shell
.
Le répertoire local ecobalyse-data
est monté sur le container dans /home/ecobalyse/ecobalyse-data
Toutes les données du conteneur, notamment celles de Brightway, sont dans
/home/ecobalyse/ecobalyse-data/.docker
, et donc dans le répertoire .docker/
du répertoire courant sur le host.
Les fichiers json générés arrivent directement sur place au bon endroit pour être comparés puis commités.
Avant de lancer Jupyter vous pouvez définir son mot de passe avec make jupyter_password
. Ensuite
vous le démarrez avec make start_notebook
.
Avant de lancer Jupyter vous pouvez définir son mot de passe avec make jupyter_password
. Ensuite
vous le démarrez avec JUPYTER_PORT=8889 make start_notebook
.
Créez un notebook dans Jupyter puis tapez import notebooks.explore
, puis shift-Enter
Créez un notebook dans Jupyter puis tapez import notebooks.ingredients
, puis shift-Enter
Si l'export
prend plus de 2 secondes par procédé, c'est un problème d'installation de pypardiso
ou de la bibliothèque mkl
(Math Kernel Library d'Intel) ou une incompatibilité avec l'architecture
CPU utilisée. Dans ce cas c'est le solveur de Scipy qui est utilisé. Il est possible que cela
explique les très légères différences d'arrondi rencontrées dans les résultats.