Angenommen, ich habe eine nützliche Python-Funktion oder Klasse (oder was auch immer), useful_thing
die in einer einzelnen Datei existiert. Es gibt im Wesentlichen zwei Möglichkeiten, den Quellbaum zu organisieren. Der erste Weg verwendet ein einzelnes Modul:
- setup.py
- README.rst
- ...etc...
- foo.py
wo useful_thing
ist in definiert foo.py
. Die zweite Strategie besteht darin, ein Paket zu erstellen:
- setup.py
- README.rst
- ...etc...
- foo
|-module.py
|-__init__.py
wo useful_thing
ist in definiert module.py
. Im Paketfall __init__.py
würde das so aussehen
from foo.module import useful_thing
so dass Sie in beiden Fällen tun können from foo import useful_thing
.
Frage: Welcher Weg wird bevorzugt und warum?
BEARBEITEN: Da Benutzer gnat sagt, dass diese Frage schlecht formuliert ist, möchte ich hinzufügen, dass das offizielle Python-Paket-Tutorial nicht zu kommentieren scheint, welche der oben beschriebenen Methoden die bevorzugte ist. Ich gebe ausdrücklich nicht meine persönliche Liste der Vor- und Nachteile an, weil ich daran interessiert bin, ob es eine von der Community bevorzugte Methode gibt, und keine Diskussion über Vor- und Nachteile generiere :)
quelle
Antworten:
Sie tun das Einfachste, was für Sie funktioniert .
Für einen Funktionsbaustein ist es absolut sinnlos, ein Paket zu erstellen. Pakete sind nützlich, um einen zusätzlichen Namespace zu erstellen und / oder Ihren Code über mehrere Module zu organisieren.
Die
json
undunittest
-Module in der Python-Standardbibliothek sind wirklich Pakete, zum Beispiel für Code-Organisationszwecke. Es ist jedoch völlig in Ordnung, Code, der sich derzeit in nur einer Python-Datei befindet, als ein Modul zu belassen.Wenn Sie Beispiele wünschen:
six
ist eine Verteilung von nur einem Modulsetuptools_subversion
,formatflowed
,rtfunicode
.Ein gutes Beispiel für Projekte, bei denen Pakete wirklich hervorragend genutzt werden, finden Sie unter:
requests
Es gibt keine "offizielle" Empfehlung. Beide Optionen sind vollständig gültig.
quelle