IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Configurer une application


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut Configurer une application
    Bonjour!

    Je continue à apprendre Python en m'amusant avec Mandelbrot, et j'ajoute petit à petit des fonctionnalités à ma petite appli de calcul de ce bel ensemble.
    J'en suis à proposer de sauver les images calculées sous forme de fichiers jpeg et aussi de sauver dans un fichier XML les paramètres d'une image pour pouvoir la recalculer plus tard si besoin.

    Je me retrouve donc à sauver des fichiers, et en conséquence à demander à l'utilisateur de choisir des répertoires. J'y arrive sans problème (et avec votre aide parfois). Mais ce choix est à renouveler à chaque fois que l'appli est lancée, et j'aimerais pouvoir sauver les choix de l'utilisateur d'une façon ou d'une autre.

    Je ne vois qu'une seule solution, celle de passer par un fichier de configuration dans lequel ces choix seraient inscrits et qui serait chargé au démarrage de l'application. Mais je n'ai qu'une vision partielle de ce que peut faire Python et surtout, venant du développement web, je n'ai jamais eu trop à me soucier de ce genre de problématique.

    Python pourrait-il, par exemple, modifier le fichier point py qu'il est en train d'exécuter pour y inscrire "en dur" les répertoires choisis? Voyez-vous d'autres solutions qui ne passeraient pas par un fichier de configuration?

    Merci d'avance!

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Bonjour.

    Dans mon équipe de développeurs, nous avons pour habitude de gérer ce genre de choses dans des fichiers YAML ou JSON. Tout ce qui est variables jamais modifiées va dans un fichier de variables d'environnement.

    On a une classe Config par exemple qui se charge de récupérer ces valeurs + une classe genre ConfigUpdate pour mettre à jour le fichier YAML|JSON si besoin.

    Citation Envoyé par ryan Voir le message
    Python pourrait-il, par exemple, modifier le fichier point py qu'il est en train d'exécuter pour y inscrire "en dur" les répertoires choisis? Voyez-vous d'autres solutions qui ne passeraient pas par un fichier de configuration?
    Pourquoi voulez-vous faire abstraction d'un fichier de configuration ? Une contrainte particulière dans votre projet qui vous en empêche ou juste que vous ne savez pas (encore) comment vous y prendre ?

  3. #3
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Bonjour Arioch, et merci d'avoir pris le temps de me répondre.

    Je ne devrais pas avoir trop de problème pour sauver deux noms de répertoires dans un fichier de configuration.

    Je me demandais seulement si cette solution est la seule qui puisse être envisagée et si cela valait la peine de me casser la tête à essayer de faire en sorte qu'un fichier point py puisse s'auto-modifier. Cela me semble un petit défi amusant (je suis un jeune retraité, j'ai du temps ), mais si c'est perdu d'avance, il est inutile que je m'acharne et je pars tout de suite sur un ficher de configuration.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par ryan Voir le message
    et si cela valait la peine de me casser la tête à essayer de faire en sorte qu'un fichier point py puisse s'auto-modifier. Cela me semble un petit défi amusant
    Quand on programme on veille à séparer le code des données.
    Et les données sont un vaste sujet.

    Intuitivement, la donnée saisie par l'utilisateur (ou la constante déclarée dans le script) ont une durée de vie limitée à l'exécution du programme (le programme terminé, elles ont disparues et il faudra les réinitialiser ou les ressaisir).

    Celles qui survivent (que le programme pourra retrouver) seront dites "persistantes".

    Et la façon le plus simple pour réaliser cette persistance reste le fichier disque.
    Maintenant, on pourrait vouloir des données dont la durée de vie soit la session utilisateur, les reboot de la machine, ... et trouver des endroits plus "propices" pour le réaliser.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Re!

    Bon, je vois que cette idée semble saugrenue et contraire aux bonnes pratiques (mais dont je ne suis plus vraiment obligé de me soucier, dilettante que je suis devenu)
    et je vais donc partir sur un fichier de configuration.

    Du coup, pour s'adapter aux différentes machines et aux différents OS, a-t-on d'autre choix que de placer le fichier de configuration dans le même répertoire que le fichier point py?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par ryan Voir le message
    a-t-on d'autre choix que de placer le fichier de configuration dans le même répertoire que le fichier point py?
    C'est un fichier de configuration qui dépend de l'utilisateur... donc il serait normal de le mettre dans un répertoire (à lui) de son home directory.

    Dans le répertoire du script, on va y poser des "constantes" (des images, des fichiers de configuration par défaut,...) indépendantes de l'utilisateur (ou partagés par tous les utilisateurs).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Personnellement, j'utilise la librairie "configparser" pour gérer les configurations de mes applications. Cette librairie est dédiée à gérer les fichiers de type ".ini" qui ont une syntaxe bien définie, exemple
    Code ini : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [chapitreA]
    var1=valeur
    var2=valeur
    var3=valeur
     
    [chapitreB]
    var1=valeur
    var2=valeur
    var3=valeur
    Cette librairie possède des méthodes permettant de récupérer les chapitres et les variables associées, et aussi de les réenregistrer ensuite. Et, conformément aux conventions implicites, pour toutes mes applications, qui ont toutes un nom spécifique (ex appliX), sous windows je nomme le fichier "appliX.ini" et je le nomme ".appliXrc" sous Linux.

    Citation Envoyé par ryan Voir le message
    J'ai un peu de mal à vous suivre...Le fichier où je voudrais sauver les deux noms de répertoires me semble bien être propre à l'application puisqu'il ne sert qu'à l'application.
    Il est propre à la fois à l'application (deux applications différentes auront deux fichiers différents) mais aussi propre à l'user qui le lance (les préférences de l'user A ne sont pas forcément les mêmes que celles de l'user B)

    Donc sous Unix/Linux ton application X sauvegardera la configuration de l'utilisateur A dans le dossier "/home/userA/.applicationXrc" et celle de l'utilisateur B dans le dossier "/home/userB/.applicationXrc". Ces répertoires étant dédiés aux utilisateurs précis, la configuration de l'user A n'impactera pas celle de l'user B et inversement.

    Et sous Windows, l'application X sauvegardera dans "C:\Documents and Settings\userA\applicationX.ini" pour le user A et dans "C:\Documents and Settings\userB\applicationX.ini" pour le user B. Suffit de checker os.name pour savoir si on est sous Unix (os.name == "posix") ou Windows (os.name == "nt") ; et récupérer os.path.expanduser("~") pour récupérer (dans tous les OS) le home de l'user qui lance le programme.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    @ Sve@r

    Merci pour ce topo complet sur la question, il répond à toutes mes interrogations au sujet de la configuration d'une appli avec python.

  9. #9
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Citation Envoyé par Sve@r Voir le message

    Donc sous Unix/Linux ton application X sauvegardera la configuration de l'utilisateur A dans le dossier "/home/userA/.applicationXrc" et celle de l'utilisateur B dans le dossier "/home/userB/.applicationXrc". Ces répertoires étant dédiés aux utilisateurs précis, la configuration de l'user A n'impactera pas celle de l'user B et inversement.
    N'est-il pas préférable de mettre le fichier dans le dossier ~/.config ?

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    N'est-il pas préférable de mettre le fichier dans le dossier ~/.config ?
    Sais pô... gvim travaille avec ~/.vimrc (ou ~/.exrc), XSession travaille avec ~/.xsessionrc, pylint travaille avec ~/.pylintrc et évidemment bash avec ~/.bashrc !!!
    Ensuite oui vlc travaillle avec ~/.config/vlc, QGis travaille avec ~/.config/QGis, designer travaille avec ~/.config/Trolltech bref il y a donc du oui et du non donc je ne sais pas trop quoi donner comme avis. Il "semblerait" que .config soit plus destiné à contenir des dossiers de configuration et non pas de simples fichiers...
    Maintenant (pour mon cas perso), travailler directement depuis le HOME me permet de simplifier la gestion Linux/Windows (os.path.expanduser("~") dans les deux cas, sans avoir besoin de rajouter ".config" dans le cas Linux). Et puis imagine que mon appli soit utlisée chez un user moldu dans lequel ".config" n'existe pas..
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/04/2018, 11h25
  2. Réponses: 0
    Dernier message: 23/12/2015, 18h14
  3. [IIS 7] Problème pour configurer une application sur iis 7
    Par Alexandre le Grand dans le forum IIS
    Réponses: 0
    Dernier message: 15/08/2015, 18h12
  4. configurer une application a la base de données
    Par B.M.W83 dans le forum Développement
    Réponses: 4
    Dernier message: 17/09/2010, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo