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

PyQt Python Discussion :

ModuleNotFoundError: No module named


Sujet :

PyQt Python

  1. #1
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Août 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Août 2016
    Messages : 28
    Par défaut ModuleNotFoundError: No module named
    Bonjour,

    J'ai un projet dont l'arborescence est celle-ci :
    -----gui
    |--controllers
    |--NewOrdersCtrl.py
    ---model
    |--entity
    |--Customer.py

    où gui, controllers, model et entity sont des packages. Dans le fichier NewOrdersCtrl.py j'ai notamment l'importation 'from model.entity.Customer import Customer'. Quand je fais tourner mon programme, j'ai l'erreur suivante :
    from model.entity.Customer import Customer ModuleNotFoundError: No module named 'model'

    J'ai fait des recherches sur le net où j'ai vu entre autre que je devais avoir des fichiers __init__.py, ce que j'ai créé mais ça ne change rien.

    Quelqu'un à une idée ?

    Merci d'avance.

    Marc

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 799
    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 799
    Billets dans le blog
    1
    Par défaut
    Salut
    Citation Envoyé par sportman1969 Voir le message
    Dans le fichier NewOrdersCtrl.py j'ai notamment l'importation 'from model.entity.Customer import Customer'. Quand je fais tourner mon programme, j'ai l'erreur suivante :
    from model.entity.Customer import Customer ModuleNotFoundError: No module named 'model'

    J'ai fait des recherches sur le net où j'ai vu entre autre que je devais avoir des fichiers __init__.py, ce que j'ai créé mais ça ne change rien.

    Quelqu'un à une idée ?
    Déjà ce n'est pas un souci de GUI mais un simple souci Python, souci archi connu qui est "comment importer mes modules". En fait c'est pas vraiment grave de se tromper de catégorie, mais tu perds juste des visiteurs qui, connaissant Python mais pas les GUI, ne viennent alors pas ici alors qu'ils ont les connaissances pour t'aider.

    Le détail qui manque, c'est l'emplacement du script que tu appelles quand tu veux exécuter ton programme, car c'est de lui que dépend tout l'import.
    En effet, le nom des dossiers est vu en nommage dit "absolu", c'est à dire depuis une racine, et cette racine correspond à l'emplacement du programme de départ.

    Imaginons que dans le même dossier de base contenant "gui" et "model" il y ait un script (peu importe le nom) nommé "projet.py" qui soit le point de départ du projet Hé bien c'est depuis cet emplacement que se feront les imports. Donc tu pourras importer NewOrdersCtrl depuis gui.controllers et importer Customer depuis model.entity. Même si ces imports sont demandés dans un sous-script annexe placé en dessous peu importe, le point de départ du chemin contenant les fichiers à importer sera le dossier contenant le script appelé.

    Si maintenant le script "projet.py" se trouve dans "model", alors ton projet aura accès au dossier "entity" mais malheureusement pas au dossier "gui" qui est trop haut (c'est un peu comme un chroot sous Linux). Et de même si, comme je le pense, le point de départ du projet est le script "NewOrdersCtrl.py". Là, tu n'auras accès qu'à l'arborescence qui se trouve en dessous, Python ne voyant rien de ce qui est au dessus.

    C'est pourquoi, quand on crée un projet, on place le point de départ tout en haut.

    Le __init__.py (qui n'est plus nécessaire depuis Python3) permet juste d'automatiser certaines actions lors de l'import du dossier qui le contient. Si par exemple tu places un "__init__.py" dans "gui", alors si tu demandes un simple import gui les instructions du __init__.py seront exécutées à ce moment là (permet par exemple de regrouper plusieurs imports en un).
    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]

  3. #3
    Membre averti
    Homme Profil pro
    Fonctionnaire
    Inscrit en
    Août 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Fonctionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Août 2016
    Messages : 28
    Par défaut
    C'est bien ça . Je pouvais toujours chercher car je ne me dirigeais pas vers cette solution.

    Un grand Merci Sve@r pour ton aide.

    Marc

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

Discussions similaires

  1. [Python 3.X] import requests / ModuleNotFoundError: No module named 'requests'
    Par JC JC dans le forum Général Python
    Réponses: 1
    Dernier message: 03/10/2019, 09h14
  2. [Python 3.X] from openpyxl import Workbook => ModuleNotFoundError: No module named 'openpyxl'
    Par Invité dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2019, 17h14
  3. [Python 3.X] ModuleNotFoundError: No module named 'PIL'
    Par Stephzxr dans le forum Général Python
    Réponses: 0
    Dernier message: 19/03/2019, 12h08
  4. [Python 3.X] modulenotfounderror : no module named 'encodings
    Par RaptorJesus dans le forum Déploiement/Installation
    Réponses: 10
    Dernier message: 20/09/2018, 22h29
  5. [Python 3.X] ModuleNotFoundError: No module named 'httplib'
    Par Muller Guy dans le forum Général Python
    Réponses: 5
    Dernier message: 12/11/2017, 15h56

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