J'ai un projet Django (mais je pense que ce n'est pas pertinent ici) et j'essaie d'ajouter un script que j'avais auparavant. Donc, je le mets dans un sous-répertoire de mon projet, et j'ai cette structure (je sais que c'est un peu le bordel pour le moment mais ça ne restera pas exactement comme ça)
De views.py je veux importer main.py (en particulier la fonction excelToXml). Après des recherches sur Internet, j’ai trouvé le code que j’ai copié dans views.py. Si je le comprenais bien, il ajoutait à la variable $ PATH le répertoire parent de first_page et bien, chaque sous-répertoire
CURRENT = os.path.dirname(os.path.abspath(__file__))
PARENT = os.path.dirname(CURRENT)
sys.path.append(PARENT)
from ExcelToXML.main import excelToXml
J'ai également créé un fichier _INIT.PY _ dans le répertoire ExcelToXML, ce fichier est laissé vide.
Cependant, même si j'ai fait tout ce que je reçois toujours cette erreur quand je lance le serveur Django
Fichier "c:\Utilisateurs\CRA\AppData\Programmes\Python\Python36-32\Lib\site\packages\Django\bin\DevisVersOpen\DevisVersOpen\urls.py", ligne 18, dans le module
depuis first_page import views
Fichier "c:\Utilisateurs\CRA\AppData\Local\Programmes\Python\Python36-32\Lib\sites-packages\Django\bin\DevisVersOpen\première_page\views.py", ligne 13, dans le module
à partir d'ExcelToXML.main import excelToXml
ModuleNotFoundError: aucun module nommé 'ExcelToXML'
Je n'ai trouvé aucune solution que je puisse comprendre sur Internet, donc je ne sais vraiment pas comment résoudre ce problème.
Votre structure de répertoire me laisse penser que vous devriez essayer d'importer comme ceci:
from first_page.ExcelToXML.main import excelToXml
comme ExcelToXML se trouve sous le module first_page, il est donc considéré comme un sous-module de first_page.
Ok bonjour, la solution que vous avez trouvée est (je pense) un désordre, vous devriez lire la documentation officielle à ce sujet https://docs.python.org/3.6/tutorial/modules.html#packages .
En bref, ajoutez simplement from .idea.main import excelToXml
. Si cela ne fonctionne pas, renommez le dossier .idea
en idea
(sans le point) et ajoutez dans votre views.py
cette ligne: from idea.main import excelToXml
Cochez cette case pour plus de détails sur ce qu'est le fichier init .py À quoi sert __init__.py?
Le fichier init .py doit être présent dans tous les répertoires et sous-répertoires dont les classes doivent être visibles à l'importation. Dans votre cas, je suppose que le répertoire parent ne contient pas le fichier init .py. Ajoutez le fichier dans le répertoire parent et importez-le comme suit
importer first_page.ExcelToXML