[egenix-mx-base] Module DateTime non trouvé

Résolu

Bonjour,

J'ai un programme qui fait appel à un module que j'ai installé mais malheureusement, il n'est pas accessible (No module named 'DateTime').

Quand j'affiche sys.path, j'ai bien (entre autres) le répertoire où se trouvent mes modules.

d:\....\Python\Lib\site-packages

Fait-il une recherche dans les sous-arborescences de "site-packages" ?

Merci pour vos lumières.

Windows / Firefox 116.0


A+ blux           "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

13 réponses

  1. Contributeur

    bonjour,

    Le souci est spécifique à ce module?

    0
    1. Modérateur

      Apparemment oui.

      Je l'ai mis dans la directory où il y a mon programme, ça marche (sauf que j'ai des erreurs de syntaxe dans ce module...).

      Je voudrais déjà régler ce pb de path...


      0
      1. Bonjour,

        "No module named 'DateTime'"

        si c'est le module que tu veux importer, il faut l'écrire comme ceci:

        import datetime

        sans majuscules ...

        0
        1. Modérateur

          Ben non justement, c'est un module spécifique d'un package particulier :-)

          https://www.egenix.com/products/python/mxBase/mxDateTime/

          Il a l'air installé :

          pip install egenix-mx-base
          Requirement already satisfied: egenix-mx-base in d:\....\python\lib\site-packages (3.2.4)

          C'est parce qu'il est appelé dans du code que j'ai récupéré que je dois l'importer.


          0
          1. Modérateur

            J'ai tourné dans tous les sens, je ne vois pas...


            0
            1. Salut,

              La dernière version de ce module date de 2015 et Python 2.7

              https://pypi.org/project/egenix-mx-base/

              0
              1. Modérateur

                Oui, j'ai vu que ce n'est pas tout jeune, mais le problème semble venir d'autre part.

                0
            2. Même si c'est un problème de path, il y a trop de différence de syntaxe entre les V2 et V3 pour que tu puisses utiliser ce module sans problème.

              Récupérer dans le module :

              print 'From:', m.getaddr('from')
              raise TypeError, "can't compare the two types"
              0
              1. Modérateur

                Bonjour,

                Autant que possible, tu devrais plutôt utiliser le module standard datetime.

                Si tu es contraint d'utiliser le module dont tu parles :

                • Suis la procédure d'installation indiquée ici.
                • Assure-toi que tu utilises une version de python compatible.
                  • Par exemple si c'est un module installé pour python2, aucune chance de l'importer avec python3 (l'interpréteur n'ira pas chercher dans ces dossiers).
                  • Idem si le module est installé pour une version spécifique de python (par exemple si tu l'installes dans le dossier de python3.11, alors tu ne pourras pas l'importer avec python3.8).
                  • Bref, si tu as plusieurs versions de python installées, sois vigilant !
                • Vérifie dans quel dossier il est installé (donne le chemin complet) et quel interpréteur python tu utilises, car cela impacte la valeur de sys.path.
                  • Tu évoques le dossier d:\....\python\lib\site-packages\. Est ce que ce dossier est bien dans ton sys.path ?
                    import sys
                    print(sys.path)
                  • Le nom du module à faire figurer derrière "import" est le nom du dossier dans lequel le module est installé dans d:\....\python\lib\site-packages\. De ce que je vois ici ce serait plutôt :
                    from mx.DateTime import DateTime

                    (qui correspond à d:\....\python\lib\site-packages\mx\DateTime\DateTime.py)

                Bonne chance

                0
                1. Modérateur

                  Salut,

                  donc oui, c'est un module spécifique et je ne sais pas ce qui est fait quand on appelle ses fonctions.

                  Pour Python, je n'ai que la version 3.

                  Sinon, oui sys.path me donne bien le rép.

                  Et j'ai bien ça :

                  try:
                      import DateTime
                  except ImportError:
                      from mx import DateTime

                  Qui est bien une anomalie...

                  Quand je suffixe avec .DateTime, mon module est appelé mais il plante :

                      def mktime((year,month,day,hour,minute,second,dow,doy,dst),
                                
                  SyntaxError: Function parameters cannot be parenthesized     

                  Donc, ça pue, je vais voir si je peux faire autrement... Mais comme je débute en Python, ça va pas être facile...

                  0
                  1. Modérateur

                    Attention, regarde bien l'import (je pense que tu as lu mon message alors que j'étais en train de le corriger) :

                    from mx.DateTime import DateTime

                    Je veux bien aussi le chemin complet dans lequel est installé ton module et la valeur de sys.path (quitte à anonymiser ton login s'il apparaît dans des chemins si tu ne veux pas le faire apparaître sur le forum).

                    Bonne chance

                    0
                2. Modérateur

                  Attention, regarde bien l'import (je pense que tu as lu mon message alors que j'étais en train de le corriger) :

                  C'est pour ça que j'ai dit ensuite que c'était bien une anomalie :-))))

                  Mon sys.path :

                  D:\Applis-W10\Python\python311.zip
                  D:\Applis-W10\Python\DLLs
                  D:\Applis-W10\Python\Lib
                  D:\Applis-W10\Python
                  D:\Applis-W10\Python\Lib\site-packages

                  Et il semble installé :

                  pip install egenix-mx-base
                  Requirement already satisfied: egenix-mx-base in d:\applis-w10\python\lib\site-packages (3.2.4)

                  0
                  1. Modérateur

                    Donc, laisse tomber, comme j'avais mis DateTime.py au même niveau que mon pgm, il le trouve tout le temps.

                    Si je le renomme, que je mette :

                    from mx import DateTime

                    ou

                    from mx.DateTime import DateTime

                    Ca plante :

                    ModuleNotFoundError: No module named 'DateTime'


                    0
                    1. Modérateur

                      Bonjour

                      Par rapport au message #13. Il faut en effet ne pas avoir de dossier/fichier ou DateTime (ou mx) au niveau du fichier où tu fais ton import, sinon il n'ira pas chercher le paquet installé dans D:\Applis-W10\Python\Lib\site-packages (en admettant que ce soit là que ton module est installé).

                      Ensuite concernant ton message d'erreur, assure toi que :\Applis-W10\Python\Lib\site-packages\mx\DateTime\DateTime.py existe, sans quoi l'import ne peut pas marcher. S'il existe, assure-toi que tu as les droits en lecture sur ce fichier.

                      Bonne chance

                      0
                      1. Modérateur

                        Le fichier DateTime.py existe bien là où il doit être et j'ai à peu près tous les droits dessus (admin de mon poste).

                        Je ne vois pas ce qui coince...


                        0
                        1. Modérateur

                          Le fichier DateTime.py existe bien là où il doit être et j'ai à peu près tous les droits dessus (admin de mon poste).

                          • Faut-il comprendre que son chemin est D:\Applis-W10\Python\Lib\site-packages\mx\DateTime\DateTime.py et que D:\Applis-W10\Python\Lib\site-packages\ est listé dans sys.path ?
                          • Est-ce que mx soit installé dans plusieurs dossiers listés dans sys.path ?

                          Au pire tu peux procéder par essai erreur pour essayer de comprendre. Admettons que DateTime.py soit bien dans D:\Applis-W10\Python\Lib\site-packages\mx\DateTime\.

                          • Si tu crées un fichier D:\Applis-W10\Python\Lib\site-packages\toto.py et que tu lances un interpréteur python, parviens-tu à faire "import toto" ?
                          • Si tu crées un fichier D:\Applis-W10\Python\Lib\site-packages\mx\toto.py parviens-tu à faire "import mx.toto" ?
                          • etc.

                          Bonne chance

                          1
                        2. Modérateur
                          @mamiemando

                          Merci mais j'abandonne, car comme je l'ai dit en plus, même si j'arrive à charger le module, j'ai des erreurs quand j'en appelle une fonction.

                          0
                        3. Modérateur
                          @blux

                          Ok, comme tu veux, dommage qu'on ait pas trouvé :s Bonne continuation

                          0