importazione relativa python

Puoi importare pacchetti relativamente all’interno di un progetto Python. Se commetti un errore nell’importazione relativa di un pacchetto, riscontrerai l’errore oltre il pacchetto di primo livello nell’importazione relativa.

In questa guida, discuteremo cosa significa questo errore e perché viene sollevato. Esamineremo un esempio di questo errore per aiutarti a imparare come scrivere correttamente un’istruzione di importazione relativa nel tuo progetto.

oltre all’errore del pacchetto di livello superiore nell’importazione relativa

Un relativo import usa il nome di un modulo per determinarne la posizione.

Considera la seguente importazione relativa:

Questo importerà il "app" Modulo Python dalla directory sopra la cartella in cui è scritto il programma con questa istruzione di importazione.

Diciamo che questo file si chiamava "program.py" ed era contenuto in una cartella chiamata "app". Il nostro progetto principale si chiama "cake". La nostra struttura di file sarebbe simile a questa:

Quando eseguiamo "program.py" file, Python vede la nostra istruzione di importazione come:

Importiamo dal "programma" cartella piuttosto che dalla nostra directory di lavoro corrente (la cartella che stiamo visualizzando).

L’81% dei partecipanti ha dichiarato di sentirsi più sicuro delle proprie prospettive di lavoro nel settore tecnologico dopo aver partecipato a un bootcamp. Fatti abbinare a un bootcamp oggi.

Il laureato medio di un bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’avvio di un bootcamp alla ricerca del primo lavoro.

Questo perché "programma&rdquo ; sono due directory dietro quella che stiamo visualizzando. I file __init__.py dicono a Python che stiamo lavorando con i nostri pacchetti Python. Questo file è vuoto in entrambi i casi.

I tuoi programmi devono utilizzare questa struttura, altrimenti riscontrerai un errore.

Uno scenario di esempio

Abbiamo un progetto chiamato "cake" che stampa la dichiarazione "Mi piace la torta!" alla console. Questo progetto diventerà più complicato, quindi stiamo usando moduli per dividere il nostro codice.

La struttura dei file per il nostro progetto è simile a questa:

Questo codice è tutto in una cartella chiamata "cake&rdquo ;. All’interno del nostro file app.py, abbiamo una dichiarazione che importa il nostro file program.py:

Questa è un’istruzione di importazione standard. All’interno del file app/program.py, abbiamo una relativa istruzione di importazione:

Questo codice importa il file "printer" dalla directory sopra app/. La directory sopra app/ è la directory principale per ou r project.

Il nostro file printer.py contiene una dichiarazione di stampa:

Andiamo‚Äô Prova a eseguire il nostro programma per vedere se funziona. Eseguiremo il nostro file app.py perché è il file principale per il nostro progetto:

Quando eseguiamo questo file, vediamo il seguente messaggio:

Il nostro file program.py non può importare la nostra "stampante" modulo.

La soluzione

Stiamo cercando di importare "stampante" nel nostro "programma app" file. Questo è un problema perché "stampante" di per sé non è in un pacchetto. Le importazioni relative funzionano solo all’interno dei pacchetti.

Per risolvere questo problema, dobbiamo modificare la struttura delle directory del nostro progetto. Dobbiamo aggiungere la nostra "stampante" file e la nostra "app" cartella nella propria directory in modo che "stampante" è in un pacchetto. Questo ci consentirà di fare riferimento alla nostra "stampante" file nell’ "app" cartella.

Possiamo mantenere il nostro file app.py nella sua directory corrente perché farà riferimento alle nostre sottodirectory.

Spostiamo tutti i nostri file, escludendo app.py, in una nuova cartella:

Tutti i nostri file di progetto, a parte app.py, si trovano in una nuova cartella chiamata "cake&rdquo ;. Dobbiamo modificare il nostro file app.py in modo da fare riferimento alla "cake" modulo:

Questo importerà il "programma" file che si trova nella directory cake/app.

Ora che il nostro file printer.py è nel suo pacchetto, dovremmo essere in grado di eseguire con successo il nostro progetto. program.py dovrebbe essere in grado di accedere a printer.py perché entrambi i file sono in un pacchetto.

"Il Karma di carriera è entrato nella mia vita quando ne avevo più bisogno e mi ha aiutato rapidamente ad abbinarmi a un bootcamp. Due mesi dopo la laurea, ho trovato il lavoro dei miei sogni in linea con i miei valori e obiettivi nella vita!"

Venus, Software Engineer presso Rockbot

Eseguiamo il nostro codice e vediamo cosa succede:

Il nostro programma stampa correttamente il messaggio "Mi piace la torta!" sulla console. Questo messaggio è definito in printer.py, come abbiamo detto in precedenza.

Questo ci dice che il nostro file program.py è stato in grado di importare con successo il file printer.py. Quando abbiamo importato il file, il suo contenuto è stato eseguito.

Conclusione

Il errore del pacchetto di livello superiore nell’importazione relativa si verifica quando si utilizza un’importazione relativa senza che il file che si sta importando faccia parte di un pacchetto. Per correggere questo errore, assicurati che tutte le directory che importi relativamente siano in i propri pacchetti.

Ora hai le risorse necessarie per farlo vivi questo errore comune di Python come un professionista!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method