Was ist der Unterschied zwischen einem "sdist' .tar.gz Verteilung und ein python-ei?
Ich bin ein bisschen verwirrt. Es scheinen zwei verschiedene Arten von Python-Paketen, source-Distributionen (setup.py sdist) und ei-Distributionen (setup.py bdist_egg).
Beide scheinen nur die Archive mit den gleichen Daten, die python-source-Dateien. Ein Unterschied ist, dass pip
, die am meisten empfohlene Paket-manager ist nicht in der Lage zu installieren Eier.
Was ist der Unterschied zwischen den beiden und was ist 'die' Art und Weise zu tun, verteilen Sie meine Pakete?
(Beachten Sie, ich bin nicht zu wollen, verteilen Sie mein Paket bei PyPI, aber ich möchte ein Paket-manager, der holt meine Abhängigkeiten von PyPI)
Du musst angemeldet sein, um einen Kommentar abzugeben.
setup.py sdist
schafft eine source-distribution: es enthält setup.py die source-Dateien des Moduls/script (.py-Dateien oder .c/.cpp für binäre Module), Ihre Daten-Dateien, etc. Das Ergebnis ist ein Archiv, das dann verwendet werden kann, zu kompilieren, alles auf jeder Plattform.setup.py bdist
(undbdist_*
) erstellt eine gebaut distribution: es umfasst .pyc Dateien .so/.dll/.dylib für binäre Module .exe, wenn mitpy2exe
unter Windows, Ihre Daten-Dateien... aber keine setup.py. Das Ergebnis ist ein Archiv, das spezifisch für eine Plattform (zum Beispiellinux-x86_64
) und eine version von Python und installiert werden kann, einfach durch entpacken in das Stammverzeichnis des Dateisystems (den ausführbaren Dateien sind in /usr/bin (oder gleichwertig), - Daten-Dateien in /usr/share, Module in /usr/lib/pythonX.X/site-packages/...). Sie können sogar bauen von rpm-Archiven direkt installiert mit deinem Paket-manager.Gibt es viele, die mehr als zwei Arten von Python (Verteilungs -) Pakete. Dieser Befehl listet viele Unterbefehle:
Beachten Sie die verschiedenen bdist Arten.
Ei war ein neues Paket geben, mit einer Einführung von setuptools, aber später angenommen von der standard-Bibliothek. Es soll installiert werden monolithisch auf
sys.path
. Dies unterscheidet sich von einer sdist Paket, das gemeint zu habensetup.py install
ausführen, kopieren Sie jede Datei in Ort und vielleicht unter anderen Maßnahmen (Gebäude, Erweiterung Module, laufen zusätzlichen, beliebigen Python-code im Paket enthalten).Eier sind weitgehend obsolet an diesem Punkt in der Zeit. Das bevorzugte Verpackungs-format ist jetzt das "Rad" - format.
Egal, ob Sie ein sdist oder ein ei (oder Rad) ist unabhängig davon, ob Sie in der Lage sein zu erklären, welche Abhängigkeiten das Paket hat (werden automatisch heruntergeladen, bei der installation von PyPI). Alles, was notwendig ist für diese Abhängigkeit feature zu arbeiten, ist für die Deklaration der Abhängigkeiten, mit der zusätzlichen APIs zur Verfügung gestellt von verteilen (der Nachfolger von setuptools) oder distutils2 (der Nachfolger von distutils - sonst bekannt als Verpackung in der aktuellen Entwickler-version von Python 3.x).
https://packaging.python.org/ ist eine gute Ressource für weitere Informationen über die Verpackung. Es deckt einige der Besonderheiten der Deklaration von Abhängigkeiten (z.B. install_requires aber nicht
extras_require
afaict).py
- Dateien verwenden Sie die Bilder als Eingabe. Wenn ich densdist
oder diebdist
option, beide enthalten nur die python-Dateien. Wie kann ich die auch Verpacken Sie die Bilder zusammen mit den python-Dateien?