837 Stimmen

Was ist der Unterschied zwischen einem Python-Modul und einem Python-Paket?

Was ist der Unterschied zwischen einem Python-Modul und einem Python-Paket?

Siehe auch: Was ist der Unterschied zwischen "Paket" und "Modul"? (für andere Sprachen)

5voto

acue Punkte 341

Eine späte Antwort, aber eine andere Definition:

Ein Paket wird durch eine importierte Top-Entität dargestellt, die entweder ein in sich geschlossenes Modul sein kann, oder die __init__.py Spezialmodul als die Top-Entität aus einer Reihe von Modulen innerhalb einer Unterverzeichnisstruktur.

Physikalisch gesehen ist ein Paket also eine Vertriebseinheit, die ein oder mehrere Module bereitstellt.

3voto

Modul : Ein Modul ist eine einfache Python-Datei mit einem ( .py ) Erweiterung, die Sammlungen von Funktionen und globalen Variablen enthält. Es handelt sich um eine ausführbare Datei, und der Begriff des Pakets in Python wird verwendet, um alle Module anzuordnen.

Ein Beispiel : Speichern Sie den Code in einer Datei namens demo ( module.py ).

def myModule1(name):
    print("My Module name is: "+ name)

Importieren Sie das Demomodul und verwenden Sie die Funktion myModule1 in diesem Modul.

import demo_module

demo_module.myModule1("Math")

Lösung:

Mein Modulname ist: Mathematik

Paket: Ein Paket ist ein Basisverzeichnis, das eine Sammlung von Modulen enthält. Dieses Verzeichnis enthält sowohl Python-Module als auch ein ( __init .py__ ), die der Interpreter verwendet, um sie als Paket zu erkennen. Das Paket ist nichts anderes als ein Namensraum. Innerhalb des Pakets gibt es Unterpakete.

Ein Beispiel:

Student (Paket)

| __init__.py (Konstrukteur)

| details.py (Modul)

| marks.py (Modul)

| collegeDetails.py (Modul)

| demo_module.py (Modul)

Ein Paket ist eine Gruppe von Modulen, die in Verzeichnissen organisiert sind und ein Paketverzeichnis bilden.

from Student import details, collegeDetails, demo_module

2voto

Shamshirsaz.Navid Punkte 1891

Ich habe die verschiedenen Antworten gelesen, die auf diese Frage gegeben wurden. Das Thema wird umfassend behandelt. Aber es scheint mir, dass ein zusätzlicher Punkt keine schlechte Idee ist. Wenn wir den Wert von __Paket__ für verschiedene Module, kommen wir zu folgendem Ergebnis. Alle sind Modultypen, aber für einige von ihnen ist das Paket nicht definiert. Prüfen Sie __Paket__ für " zufällig " und " Mathe ".

import cv2
import math
import random
import tkinter as tk

print('cv2:',type(cv2))             # <class 'module'>
print('cv2:',cv2)                   # <module 'cv2.cv2' from 'PATH'>
print('cv2:',cv2.__package__)       # cv2

print('random:',type(random))       # <class 'module'>
print('random:',random)             # <module 'random' from 'PATH'>
print('random:',random.__package__) # [EMPTY]

print('tk:',type(tk))               # <class 'module'>
print('tk:',tk)                     # <module 'tkinter' from 'PATH'>
print('tk:',tk.__package__)         # tkinter

print('math:',type(math))           # <class 'module'>
print('math:',math)                 # <module 'math' (built-in)>
print('math:',math.__package__)     # [EMPTY]

Wenn wir also einen Ordner wie folgt definieren:

enter image description here

Auf diese Weise können wir die __Paket__ Ausgabe:

import myfolder
import myfolder.script1 as s1
import myfolder.script2 as s2
import myfolder.mySubfolder.script3 as s3

print(type(s1)) # <class 'module'>
print(type(s2)) # <class 'module'>
print(type(s3)) # <class 'module'>

print(s1.__package__) # myfolder
print(s2.__package__) # myfolder
print(s3.__package__) # myfolder.mySubfolder

print(myfolder)                     # <module 'myfolder' (namespace)>
print(myfolder.mySubfolder)         # <module 'myfolder.mySubfolder' (namespace)>
print(myfolder.mySubfolder.script3) # <module 'myfolder.mySubfolder.script3' from 'PATH'>

print(myfolder.__package__)                     # myfolder        
print(myfolder.mySubfolder.__package__)         # myfolder.mySubfolder
print(myfolder.mySubfolder.script3.__package__) # myfolder.mySubfolder

-1voto

Andrew Anderson Punkte 855

Ich weiß, es ist zu spät, aber eine einfache Antwort, die für einige ausreichen würde, ist:

ein Modul ist eine Datei,

ein Paket ist ein Ordner.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X