Modulo vs. pacchetto?


140

Ogni volta che lo faccio from 'x' import 'y'mi chiedevo quale sia considerato il 'modulo' e quale sia il 'pacchetto', e perché non è il contrario?


1
Per quanto riguarda il motivo per cui è il non il contrario, vedi stackoverflow.com/questions/3600352/...

1
Per quanto mi riguarda, sono grato per questa domanda, perché la risposta è concisa e fornisce l'esatta conoscenza necessaria. La documentazione è completa ed elegante, ma è dettagliata e contiene molte più informazioni di quelle richieste dall'OP, e sicuramente più di quanto mi servisse. Volevo solo una risposta a quella domanda specifica, e la risposta qui sotto è esattamente quello che volevo. Molti di noi non hanno bisogno di risposte così formali o approfondite.
Teekin,

Un concetto correlato da sapere - Classi contro moduli in Python
RBT

Risposte:


192

Un modulo Python è semplicemente un file sorgente Python, che può esporre classi, funzioni e variabili globali.

Se importato da un altro file sorgente Python, il nome del file viene trattato come uno spazio dei nomi.

Un pacchetto Python è semplicemente una directory dei moduli Python.

Ad esempio, immagina il seguente albero di directory in /usr/lib/python/site-packages:

mypackage/__init__.py <-- this is what tells Python to treat this directory as a package
mypackage/mymodule.py

Quindi allora faresti:

import mypackage.mymodule

o

from mypackage.mymodule import myclass

Ah, quindi quando dici che il nome del file è trattato come uno spazio dei nomi, ti piacerebbe qualcosa del genere? "mymodule.var1" per il primo caso o "myclass.var1" per il secondo?
Templare oscuro,

1
Non esattamente. Il pacchetto conta ancora come parte dello spazio dei nomi. Se vuoi fare quello che hai detto, devi fare dal miomodulo di importazione mypackage.
Yam Marcovic,

Potrebbe essere utile aggiungere qualcosa sui pacchetti dello spazio dei nomi, per i quali il codice non deve necessariamente apparire tutti nella stessa struttura di directory.
holdenweb,

@holdenweb Non ho mai usato direttamente i diversi meccanismi coinvolti lì, quindi non un esperto. Se fornisci una spiegazione dettagliata a riguardo in una nuova risposta, farò riferimento ad essa dalla mia.
Yam Marcovic,

Probabilmente un po 'troppo esoterico per
valerne la
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.