Problème de CWD avec PyInstaller

a marqué ce sujet comme résolu.

Bonjour,

J’essaye de convertir un de mes projets python en exécutable avec l’outil PyInstaller. Dans l’ensemble, ça fonctionne plutôt bien, mais j’ai un problème avec les chemins relatifs…

Mon projet utilise une base de données SQLite stockée dans le même dossier que le projet. Pour éviter les problèmes lorsque je serais amené à déplacer le dossier, j’ai utilisé un chemin relatif pour accéder à la base de données. Quand je lance le fichier .py, tout fonctionne normalement, mais quand j’utilise l’exécutable généré par PyInstaller, stocké au même endroit, et que j’affiche Path.cwd() avec le module pathlib, j’obtiens un résultat similaire à celui que j’aurais obtenu en utilisant Path.home().

Pourriez-vous m’aider ?

Merci d’avance,

@flopy78

Salut,

Path.cwd sera toujours le chemin à partir duquel tu as lancé l’application, donc ça t’aide pas pour localiser une base de donnée à côté du fichier source. La solution la plus propre pour stocker une base de donnée localement gérée par ton application est de la sauvegarder dans un répertoire prévu à cet effet. Sous Windows, ça ressemble généralement à quelque chose du genre C:/Users/<USER>/AppData/Roaming, accessible via la variable %LOCALAPPDATA%. Sous Linux, ce sera quelque chose comme ~/.local/share, accessible via $XDG_DATA_HOME. Tu peux utiliser platformdirs qui abstrait ça de façon portable pour toi.

Si la base de donnée contient des données que tu veux distribuer comme un asset de ton application, il faut que tu regardes du côté de importlib.ressources dans la bibliothèque standard.

Enfin, est-ce que tu as vraiment besoin de passer par pyinstaller ? Tu peux pas plutôt distribuer une wheel, qui est la façon standard de distribuer des bibliothèques et applications Python ?

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte