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 .py
estensione, 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/pythonfiles
e 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.py
tramite:
import module_1
Quando creo un pacchetto e desidero importare moduli dal pacchetto, devo creare una cartella $PYTHONPATH
contenente i moduli, accompagnata da un file (può essere vuoto) chiamato__init__.py
Per esempio:
Per importare da un pacchetto (cartella) denominata my_package
in /home/myname/pythonfiles
, aggiungere il /home/myname/pythonfiles
percorso 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 $PYTHONPATH
permanente:
Aggiungi la seguente riga al tuo ~/.profile
file.
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 subfolder
all'interno della cartella packagename
:
import packagename.subfolder.module_3
Dato che tutte le sottocartelle nel pacchetto includono il proprio __init__.py
file.
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.py
e module.py
, posso semplicemente importare il modulo tramite:
import module
__init__.py
file 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