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.