Come importare classi Python da una directory padre

Cerca

In questa guida vediamo come importare delle classi Python che sono contenute in una parent directory. Referenziare ed importare moduli contenuti in una directory padre non è consentito dalla Python 3.3 e successive. Vediamo di affrontare il problema con uno scenario concreto.

Scenario

Abbiamo la seguente struttura di cartelle e file python:

				
					app
  -classes
    -car.py
    -bike.py
  -scripts
    -run.py
				
			

Dallo script run.py vogliamo importare la classe car.py e bike.py, ma per quanto detto precedentemente, non possibile importare un modulo contenuto in una directory padre o in altra sua sottodirectory, pertanto ci si imbatte in un errore simile a questo:

				
					Traceback (most recent call last):
  File "/app/scripts/run.py", line 6, in <module>
    from classes.car import *
ModuleNotFoundError: No module named 'classes'
				
			

Soluzione 1: Usare il metodo sys.path

In questo caso utilizziamo il modulo sys ed impostiamo il path che porta al modulo richiesto.

Aggiungiamo il percorso al sys.path utilizzando il metodo append(). Questo metodo viene utilizzato per aggiungere uno specifico percorso da rendere disponibile agli interpreti per le loro ricerche delle classi.

				
					import sys

# setting path
sys.path.append('/app/classes')
 
# importing
from car import *
from bike import *
 
# using
get_car_brand()
set_bike_model('Ducati')
				
			

Soluzione 2: Usare il metodo os.path.abspath()

In questo caso utilizziamo il modulo sys unitamente al modulo path per estrarre la directory contenente le classi da importare e successivamente aggiungerla al path.

				
					import pathlib
import sys

# directory reach
directory = pathlib.Path(__file__).parent.resolve()

print(directory.parent)

# setting path
sys.path.append(str(directory.parent) + "/classes")

# importing
from car import *
from bike import *

# using
get_car_brand()
set_bike_model('Ducati')
				
			

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Most Recent

Come installare Composer su Ubuntu

Composer è il gestore delle dipendenze per PHP. Per installarlo su Ubuntu seguiamo questi semplici passi illustrati qui sotto. Installazione di Composer Per prima cosa

Come realizzare un client NTP in Python

In questo post vediamo come realizzare, utilizzando poche righe di codice, uno script Python che agisca da client NTP. Soluzione 1 In questa prima soluzione

Come avviare UEFI dopo reboot su Linux

L’accesso a UEFI al boot del computer richiede la pressione di un tasto che varia per ogni produttore di hardware. I tasti che più comunemente

Partners