logo

Python: importa il modulo da una directory diversa

Mentre lavoriamo su grandi progetti potremmo confrontarci con una situazione in cui vogliamo importare a modulo da una directory diversa. Ma per qualche motivo, il modulo potrebbe non essere importato correttamente. Ora non preoccuparti se il tuo modulo non viene importato correttamente. In questo articolo discuteremo dei modi per importare un modulo da un'altra directory.

Nota: Un modulo è semplicemente un programma Python che termina con .py estensione e una cartella che contiene un modulo diventa un pacchetto.



Struttura della directory:

 - Folder_1 - main.py - Folder_2 - module1.py>

Supponiamo, per importare come importare file in Python, di avere due cartelle diverse, una contiene main.py che è il nostro file Python principale in cui vogliamo importare modulo1 da Cartella_2.

Modulo 1: contiene due funzioni chiamate aggiungi e pari_dispari. La funzione add accetta due argomenti e ne restituisce la somma. La funzione dispari_pari ne richiederà solo uno discussione e stampa Anche se il numero è pari o stampa Dispari se il numero è dispari.



modulo1.py

Python3






# creating a simple add function> def> add(a, b):> >return> a>+>b> # creating a simple odd_even function> # to check if the number is odd or even> def> odd_even(n):> >if> n>%> 2> =>=> 0>:> >print>(>'Even'>)> >else>:> >print>(>'Odd'>)>

>

>

Se proviamo semplicemente a importare modulo 1 da Cartella_2, incontreremo il seguente errore.

main.py

Python3

nat vs letto




# importing module1 from another folder> import> Folder_2> # calling odd_even function> module1.odd_even(>5>)>

>

>

Produzione:

Errore

ErroreModuloNotFound , perché per impostazione predefinita l'interprete Python controllerà il file solo nella directory corrente e dobbiamo impostare manualmente il percorso del file per importare i moduli da un'altra directory. Possiamo farlo utilizzando vari modi. Questi modi sono discussi di seguito in dettaglio.

Metodo 1: importa il modulo da una directory diversa utilizzando il modulo sys

Possiamo usare sys.path per aggiungere il percorso della nuova cartella diversa (la cartella da cui vogliamo importare i moduli) al percorso di sistema in modo che Python possa anche cercare il modulo in quella directory se non trova il modulo nella sua directory corrente. COME sys.path rientra nel classe di tipo elenco quindi, possiamo facilmente utilizzare il metodo insert per aggiungere il percorso della cartella.

Python3




# importing sys> from> module1>import> odd_even, add> import> sys> # adding Folder_2 to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/Folder_2'>)> # importing the add and odd_even> # function> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))>

>

>

Produzione :

Utilizzando sis

Metodo 2: utilizzo di PYTHONPATH variabile d'ambiente

Allo stesso modo, se non vuoi usare il file sist modulo per impostare il percorso della nuova directory. Puoi assegnare un percorso di directory alla variabile PYTHONPATH e continuare a far funzionare il tuo programma.

In Linux , possiamo usare il seguente comando nel terminale per impostare il percorso:

esporta PYTHONPATH='percorso/nella/directory'

Nel sistema Windows:

SET PYTHONPATH=percorso/della/directory

Per vedere se la variabile PYTHONPATH contiene il percorso della nuova cartella, possiamo usare il seguente comando:

eco $PYTHONPATH

Python3

array di restituzione Java




# importing the add and odd_even function> from> module1>import> odd_even, add> # calling odd_even function> odd_even(>5>)> # calling add function> print>(>'Addition of two number is :'>, add(>2>,>2>))>

>

>

Produzione:

Utilizzando PYTHONPATH

Supponiamo di avere una struttura di directory come questa:

- project - Folder_1 - main.py - Folder_2 - subfolder - new.py>

Ora vuoi importare il file nuovo.py modulo da Cartella_2 nella cartella_1 del nostro progetto main.py file.

Sintassi:

da progetto.cartella.sottocartella.nomefile nomefunzione di importazione

Python3




# importing sys> import> sys> # adding Folder_2/subfolder to the system path> sys.path.insert(>0>,>'/home/amninder/Desktop/project/Folder_2/subfolder'>)> # importing the hello> from> new>import> hello> # calling hello function> hello()>

>

>

c# contiene una stringa

Produzione:

Produzione