Come python trova i suoi moduli
A rigor di termini, un modulo è un singolo file Python, mentre un pacchetto è una cartella contenente file Python, accompagnato da un file (che può essere vuoto) chiamato __init__.py, per dire a Python che è un pacchetto da cui importare i moduli. In entrambi i casi, i moduli necessitano della loro .pyestensione, ma l'importazione avviene senza (vedere più avanti).
Per impostazione predefinita, Python cerca i suoi moduli e pacchetti in $PYTHONPATH.
Per scoprire cosa è incluso in $ PYTHONPATH, esegui il seguente codice in python (3):
import sys
print(sys.path)
Come aggiungere una directory
Di tanto in tanto
Dall'interno di un file Python, è possibile aggiungere occasionalmente percorsi al percorso predefinito aggiungendo le seguenti righe nella sezione head dell'applicazione o dello script Python:
import sys
sys.path.insert(0, "/path/to/your/package_or_module")
Per esempio:
se ho una cartella: /home/myname/pythonfilese voglio importare il file module_1.py, che si trova in quella directory, lo aggiungo alla sezione head del mio codice:
import sys
sys.path.insert(0, "/home/myname/pythonfiles")
E posso semplicemente importare il file module_1.pytramite:
import module_1
Quando creo un pacchetto e desidero importare moduli dal pacchetto, devo creare una cartella $PYTHONPATHcontenente i moduli, accompagnata da un file (può essere vuoto) chiamato__init__.py
Per esempio:
Per importare da un pacchetto (cartella) denominata my_packagein /home/myname/pythonfiles, aggiungere il /home/myname/pythonfilespercorso al vostro $PYTHONPATH, come nell'esempio 1, e importare il modulo chiamato module_2.py(all'interno della cartella del pacchetto) semplicemente con: `
from <packagename> import module_2
Aggiunta di directory in modo $PYTHONPATHpermanente:
Aggiungi la seguente riga al tuo ~/.profilefile.
export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
sottodirectory
Dall'interno di un pacchetto, le sottodirectory non sono incluse in questo modo; devi "incatenare" le directory. Per importare un modulo module_3.py, all'interno della cartella subfolderall'interno della cartella packagename:
import packagename.subfolder.module_3
Dato che tutte le sottocartelle nel pacchetto includono il proprio __init__.pyfile.
Quando un modulo si trova nella stessa directory dello script o dell'applicazione
Non è necessario inserire il percorso di un modulo quando si trova nella stessa directory dello script o dell'applicazione, viene automaticamente aggiunto.
Esempio:
Se ho una cartella contenente script.pye module.py, posso semplicemente importare il modulo tramite:
import module
__init__.pyfile nella tua cartella? questo è il modo in cui Python crea pacchetti e consente di importare moduli da quel pacchetto. guide.python-distribute.org/creation.html