11
votes

Adresse inter-plateforme du fichier de configuration

cas simple

J'ai un programme Python que j'ai l'intention de prendre en charge les systèmes * Nix et Windows. Le programme doit être configurable, au moins globalement. Existe-t-il un moyen multi-plate-forme pour résoudre le fichier de configuration?

I.e. Je veux écrire au lieu de xxx

quelque chose le long des lignes de xxx


Un cas légèrement plus avancé

peut-il être utilisé à la configuration spécifique à l'utilisateur? C'est à dire. Pour conserver la configuration dans ~ utilisateur / .myprogram / sous UNIX et dans HKEY_LOCAL_USER Section de registre sous Windows?


3 commentaires

Dupe possible de Stackoverflow.com/questions/965694/...


Merci pour la pointe, mais ce n'est pas vraiment une dupe. Ces deux questions concernent le format du fichier de configuration, tandis que ma question concerne son emplacement.


N'utilisez pas ~ / .MyProgramme, utilisez la spécification XDG basé sur XDG, qui définit là où vous devrait stocker / lire vos configurations. (Par défaut, ~ / .config / myprogram).


3 Réponses :


6
votes

Python permettra aux chemins de slash avant-slash sur Windows, et OS.Path.Expanduser code> fonctionne également sous Windows, de sorte que vous puissiez obtenir un chemin de fichier spécifique à l'utilisateur à l'aide de:

config_file = os.path.expanduser("~/foo.ini")


1 commentaires

Génial, et existe-t-il un moyen de résoudre le premier cas (chemin de fichier de configuration globale)?



2
votes

Vous voudrez peut-être utiliser dirspec . Il fonctionne dans gnu / linux, Mac OS et Windows.

Vous pouvez l'obtenir à partir de: Launchpad < / a>

ou l'installer à partir de PYPI xxx

et dans votre code, utilisez quelque chose comme: xxx

Il est utilisé par Ubuntu One, regardez cet exemple de code de Leur documentation: https://one.ubuntu.com/ Développeur / Data / U1DB / Tutorial # Stockage-and-Récupération-Tâches


0 commentaires

1
votes

Les réponses actuelles fournissent une solution incomplète à vos problèmes (plate-forme multi-plate-forme + utilisateur VS VS System-Wide-Wide-Wide-Wide-Wide System).

Library Confondre répond à vos besoins:

Combinez des données de configuration à partir de plusieurs sources. En utilisant la superposition, Confondre permet une configuration spécifique à l'utilisateur de remplacer de manière transparente Configuration à l'échelle du système, qui remplace à son tour les valeurs par défaut intégrées.
[...]
Un emballage config_default.yaml peut être utilisé pour fournir un bas de couche Les valeurs par défaut utilisent la même syntaxe que les utilisateurs verront. Une superposition d'exécution permet au programme de remplacer par programmation et d'ajouter une configuration valeurs. Recherchez des fichiers de configuration dans des chemins spécifiques à la plate-forme. Comme $ Xdg_config_home ou ~ / .config sur UNIX; "Support d'application" sur MacOS; % Appdata% sur Windows.


0 commentaires