setuptools vs. distutils: Warum sind Distutils noch etwas?

Python hat eine verwirrende Geschichte von tools, die verwendet werden können, zu Verpacken und zu beschreiben Projekte: dazu gehören distutils in der Standard-Bibliothek, distributedistutils2und setuptools (und vielleicht mehr). Es scheint, dass distribute und distutils2 eingestellt wurden, zu Gunsten der setuptoolsBlätter, die zwei konkurrierende standards.

Meinem Verständnis setuptools bietet weit mehr Optionen (z.B. die Deklaration von Abhängigkeiten, tests, etc.) als distutils aber es ist nicht in der Python-standard-Bibliothek (noch?) nicht.

Den Python Verpackung Bedienungsanleitung[Eins] empfiehlt nun:

Verwenden setuptools Projekte definieren und erstellen von Source-Distributionen.

Und erklärt:

Zwar können Sie rein distutils für viele Projekte, es unterstützt nicht die Definition von Abhängigkeiten zu anderen Projekten und fehlt mehrere convenience utilities für das automatische Auffüllen Paket-Metadaten korrekt sind setuptools. Außerhalb der standard-Bibliothek, setuptools bietet auch eine weitere konsistente feature-set über verschiedene Versionen von Python, und (im Gegensatz zu distutils), setuptools wird aktualisiert werden, zu produzieren, die die bevorstehende "Metadaten 2.0" - standard-Formate, die auf allen unterstützten Versionen.

Sogar für Projekte, die Sie tun wählen, um distutilswenn pip installiert solche Projekte direkt von der Quelle (eher als die Installation von einer bereits bestehenden Rad-Datei), es wird tatsächlich bauen Sie Ihr Projekt mit setuptools statt.

Jedoch, den Blick in verschiedene Projekt setup.py Dateien zeigt, dass diese nicht scheinen, um eine tatsächliche standard. Viele Pakete verwenden immer noch distutils und diejenigen, die Unterstützung setuptools oft mischen setuptools mit distutils z.B. durch eine fallback-import:

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

Gefolgt von einem Versuch, einen Weg zu finden, um zu schreiben ein setup installiert werden kann sowohl setuptools und distutils. Dies beinhaltet oft verschiedene Möglichkeiten der fehleranfälligen Abhängigkeiten zu prüfen, da distutils unterstützt keine Abhängigkeiten in der setup-Funktion.

Warum sind die Menschen immer noch machen den zusätzlichen Aufwand zu unterstützen distutils - ist die Tatsache, dass setuptools ist nicht in der standard-Bibliothek, die der einzige Grund? Was sind die Vorteile distutils und gibt es irgendwelche Nachteile zu schreiben setup.py Dateien, die nur unterstützen setuptools.

InformationsquelleAutor der Frage cel | 2014-08-16

Schreibe einen Kommentar