Partage
  • Partager sur Facebook
  • Partager sur Twitter

Acceder a des méthodes depuis un autre dossier

    23 décembre 2023 à 16:36:58

    Bonjour,

    Mon problème est le suivant:

    J'ai 3 dossiers (Model, View, Controller) qui disposent chacun de fichiers avec des méthodes et je n'arrive pas à accéder aux méthodes qui sont dans d'autres dossiers.

    Par exemple je voudrais DEPUIS le fichier python Main.py qui se trouve dans le dossier Controller, accéder à la fonction creer_bdd qui est dans le fichier Gestion_database.py qui se trouve dans le dossier Model.

    Comment dois-je procéder pour faire ca. Je sais que ca doit se faire via un import mais je n'arrive pas à le faire. J'ai fais un dessin pour que ce soit plus clair.

    Merci de votre aide.

    -
    Edité par Jobard91 23 décembre 2023 à 16:40:12

    • Partager sur Facebook
    • Partager sur Twitter
    La connaissance ne vaut que si elle est partagée.
      23 décembre 2023 à 21:18:47

      from Model.Gestion_database import creer_bdd
      

      Vous avez testé cette importation ?

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        24 décembre 2023 à 0:39:23

        Bonjour,

        Effectivement j'avais essayé et ca me met un message d'erreur.

        from Model.gestion_bdd import creer_table

        Ca me retourne l'erreur suivante :

        from Model.gestion_bdd import creer_table
        ModuleNotFoundError: No module named 'Model'




        • Partager sur Facebook
        • Partager sur Twitter
        La connaissance ne vaut que si elle est partagée.
          24 décembre 2023 à 9:24:01

          Pourtant c'est bien comme cela que ça doit être fait, depuis votre répertoire racine (celle du projet), exécuter cette commande python

          python3 -m Controller.Main

          et ça devrait fonctionner... Faîtes une recherche sur la commande -m pour comprendre le pourquoi du comment.


          Je vous laisse lire cette documentation pour bien comprendre la manière de créer un projet en python.

          Votre manière de faire est peut-être reprise de votre expérience sur un autre langage, mais je vous conseille de faire abstraction de cette expérience et d'appliquer la manière de faire Python à moins de prendre le risque de faire du bricolage avec vos modules.

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            27 décembre 2023 à 17:30:28

            Jobard91 a écrit:

            J'ai 3 dossiers (Model, View, Controller) qui disposent chacun de fichiers avec des méthodes et je n'arrive pas à accéder aux méthodes qui sont dans d'autres dossiers.

            Vous avez tout d'abord un problème de terminologie. Vos fichiers d'extension .py s'appellent scripts ou modules. Ils contiennent la définition de fonctions (les méthodes, c'est pour des "class").

            Jobard91 a écrit:

            Comment dois-je procéder pour faire ca. Je sais que ca doit se faire via un import mais je n'arrive pas à le faire. J'ai fais un dessin pour que ce soit plus clair.

            Le fonctionnement d'import suppose partir d'un script principal dont le répertoire sert de racine aux autres packages/modules de l'application (qui seront dans le répertoire ou des sous-répertoires).

            En dehors de cette hiérarchie simple, il va falloir dire à Python où chercher les modules à importer en les ajoutant à la liste de répertoires qu'est sys.path (manuellement ou via PYTHONPATH ou via python -m).

            Et avant d'en être là, définir la class Model avec une fonction créer_bdd dans le script main.py pourra très bien simuler un module dans un premier temps:

            >> class M:
            ...      def f(): print('**f')
            ...
            >>> M.f()
            **f



            • Partager sur Facebook
            • Partager sur Twitter

            Acceder a des méthodes depuis un autre dossier

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown