Modulul de import nu funcționează (Programare, Python, Django, Python 3.X, Modul)

Peni a intrebat.

Am un proiect django (dar cred că nu e nici revelator aici) în care încerc să adaug un script pe care l-am făcut înainte. Așa că l-am pus într-un subdirector al proiectului meu și am următoarea structură (știu că e un pic dezordonată momentan, dar nu va rămâne exact așa)

De la views.py vreau să import main.py (În special funcția excelToXml) . După căutări pe internet am găsit acel cod pe care l-am copiat în views.py . Dacă nu am înțeles bine, acesta adaugă la variabila $PATH directorul părinte al lui first_page și apoi, fiecare subdirectorat

CURRENT = os.path.dirname(os.path.abspath(__file__))
PARENT = os.path.dirname(CURRENT)
sys.path.append(PARENT)
from ExcelToXML.main import excelToXml

De asemenea, am creat un fișier __init.py__ în directorul ExcelToXML, acest fișier este lăsat gol.

Cu toate acestea, chiar dacă am făcut toate astea, tot primesc această eroare când execut serverul django

Fișier „c:UsersCRAAppDataLocalProgramsPythonPython36-32Libsite-packagesdjangobinDevisVersOpenDevisVersOpenurls.py”, linia 18, în module

from first_page import views

Fișier „c:UsersCRAAppDataLocalProgramsPythonPython36-32Libsite-packagesdjangobinDevisVersOpenfirst_pageviews.py”, linia 13, în module

from ExcelToXML.main import excelToXml

ModuleNotFoundError: Nu există un modul numit „ExcelToXML

Nu am găsit nicio soluție pe care să o înțeleg pe internet, așa că chiar nu știu cum să rezolv acest lucru

4 răspunsuri
Cédric Julien

Structura ta de directoare mă lasă să cred că ar trebui să încerci să imporți astfel :

from first_page.ExcelToXML.main import excelToXml

pentru că ExcelToXML se află sub modulul first_page, deci este văzut ca un submodul al first_page.

Rohith

Verificați acest lucru pentru detalii despre ce este init.py file La ce folosește __init__.py?

init.py trebuie să fie prezent în fiecare director și subdirectoare ale căror clase trebuie să fie vizibile pentru import. În cazul dumneavoastră, bănuiesc că directorul părinte nu are fișierul init.py. Adăugați fișierul în directorul părinte și importați-l după cum urmează

import first_page.ExcelToXML

Zcode

Bine bună ziua, soluția pe care ai găsit-o este (cred eu) o mizerie, ar trebui să citești documentația oficială despre ea https://docs.python.org/3.6/tutorial/modules.html#packages.
Pe scurt, adăugați doar from .idea.main import excelToXml.dacă nu funcționează, redenumiți .idea în idea(fără punct) și adăugați în views.py această linie :from idea.main import excelToXml

Omkar Sutar

Pentru python schimbați locația fișierului de import și apoi importați. A funcționat pentru mine.
Locația poate fi: C:python 3.8Lib