Aller au contenu

herepath

Une façon plus simple de retrouver tes fichiers.

CI PyPI Versions de Python Licence : MIT

Code source : github.com/Pinto-Katende-Jonathan/herepath

herepath construit des chemins de fichiers relatifs à la racine de ton projet, peu importe le dossier depuis lequel tu lances ton code. C'est un portage en Python du paquet R here.

Un chemin relatif comme ../../data/ventes.csv casse dès que tu lances un script depuis un autre dossier, un notebook ou ton éditeur. Écris plutôt ceci :

from herepath import here

here("data", "ventes.csv")
# -> /home/moi/mon-projet/data/ventes.csv   (toujours, depuis n'importe où)

Pourquoi herepath ?

Le problème qu'il règle est petit mais constant. Un chemin relatif comme ../data/ventes.csv ne pointe pas vers un fichier. Il pointe vers un fichier relatif à l'endroit où tu te trouves, donc il casse dès que tu te déplaces.

herepath trouve la racine de ton projet une fois, puis ancre chaque chemin à cette racine. Le résultat ne dépend plus de ton répertoire de travail.

Ce qu'il t'apporte :

  • Marche depuis n'importe où. Lance le même script depuis la racine, un sous-dossier, un notebook ou ton IDE. here() renvoie le même chemin absolu à chaque fois.
  • Aucune dépendance. Bibliothèque standard uniquement. herepath n'ajoute rien à ton arbre de dépendances.
  • Une petite API. Quatre fonctions de base : here(), i_am(), set_here(), dr_here(). L'essentiel s'apprend en quelques minutes.
  • Une commande shell aussi. Installer le paquet te donne une commande herepath pour les scripts et les Makefiles.

Installation

pip install herepath

Un seul nom partout : tu installes herepath, tu importes herepath, et tu obtiens une commande herepath. Voir Installation pour plus de détails.

Un petit exemple

Suppose que ton projet ressemble à ça :

mon-projet/
├── pyproject.toml
├── data/
│   └── ventes.csv
└── analyse/
    └── rapport.py

Dans analyse/rapport.py :

from herepath import i_am, here   # (1)!
import pandas as pd

i_am("analyse/rapport.py")        # (2)!

df = pd.read_csv(here("data", "ventes.csv"))  # (3)!
  1. Importe les deux fonctions dont tu as besoin.
  2. Déclare où vit ce fichier, par rapport à la racine du projet. herepath sait désormais où se trouve la racine.
  3. Construis un chemin depuis la racine. Ça marche que tu lances le script depuis mon-projet/, depuis analyse/, ou depuis un notebook trois dossiers plus loin.

Plus de ../, et plus de « ça marche sur ma machine ».

Par où continuer

Licence

MIT, Jonathan Katende Pinto. Inspiré du paquet R here de Kirill Müller et Jennifer Bryan.