web-dev-qa-db-fra.com

Python - Module introuvable

Je suis un débutant avec Python. Avant de commencer, voici la structure de mes dossiers Python

-project
----src
------model
--------order.py
------hello-world.py

Sous src, j'ai un dossier nommé model qui contient un fichier Python appelé order.py dont le contenu suit:

class SellOrder(object):
    def __init__(self,genericName,brandName):
        self.genericName = genericName
        self.brandName = brandName

Suivant mon hello-world.py se trouve dans le dossier src, un niveau supérieur au order.py

import model.order.SellOrder

order = SellOrder("Test","Test")

print order.brandName

Chaque fois que je lance python hello-world.py, l'erreur est générée

Traceback (most recent call last):
  File "hello-world.py", line 1, in <module>
    import model.order.SellOrder
ImportError: No module named model.order.SellOrder

Y a-t-il quelque chose qui m'a manqué?

19
user962206

Tous les modules en Python doivent avoir une certaine structure de répertoires. Vous pouvez trouver les détails ici.

Créez un fichier vide appelé __init__.py dans le répertoire model, de sorte que la structure de votre répertoire ressemble à ceci:

.
└── project
    └── src
        ├── hello-world.py
        └── model
            ├── __init__.py
            └── order.py

Également dans votre fichier hello-world.py, modifiez l'instruction d'importation comme suit:

from model.order import SellOrder

Cela devrait résoudre le problème :)

P.S .: Si vous placez votre répertoire model dans un autre emplacement (pas dans la même branche de répertoire), vous devrez modifier le chemin python en utilisant sys.path.

20
RafazZ

vous avez besoin d'un fichier nommé __init__.py (deux caractères de soulignement de chaque côté) dans chaque dossier de la hiérarchie, donc un dans src/ et un dans model/. C’est ce que python recherche pour savoir qu’il doit accéder à un dossier particulier. Les fichiers sont censés contenir des instructions d'initialisation, mais même si vous les créez vides, cela les résout.

2

Vous devez vous assurer que le module est installé pour tout versions de python

Vous pouvez vérifier si un module est installé pour python en lançant:

désinstaller pip moduleName

S'il est installé, il vous demandera si vous souhaitez le supprimer ou non. Mon problème était qu'il était installé pour python, mais pas pour python3. Pour vérifier si un module est installé pour python3, exécutez:

python3 -m désinstaller pip moduleName

Après cela, si vous constatez qu’un module n’est pas installé pour une ou les deux versions, utilisez ces deux commandes pour installer le module.

  • pip installer moduleName
  • installation de pip python3 -m moduleName
1
Walker Sutton