Python-Pakete und Ei-Info-Verzeichnisse


80

Kann jemand erklären, wie Ei-Info-Verzeichnisse mit ihren jeweiligen Modulen verknüpft sind? Zum Beispiel habe ich Folgendes:

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

Ich gehe davon aus, dass das Ei-Info-Verzeichnis das entsprechende Modul für setuptools (easy_install) sichtbar machen soll, oder? Wenn ja, wie verbindet setuptools das Ei-Info-Verzeichnis mit dem Modulverzeichnis?

Angenommen, ich bin auf dem richtigen Weg und zum Beispiel ... Wenn ich ein vorhandenes Paket von mir für setuptools sichtbar machen wollte, könnte ich einfach das Modulverzeichnis und das Ei-Info-Verzeichnis mit der Site verknüpfen. Paketverzeichnis? Ich hätte es nur selbst versucht, bin mir aber nicht sicher, wie ich testen soll, ob das Paket für setuptools sichtbar ist. Bonuspunkte, wenn Sie mir auch sagen können, wie ich das testen soll :)

Der Hauptgrund, warum ich versuche, all dies zu verstehen, ist, dass ich einige meiner Module zu Site-Paketen verknüpfen möchte, damit ich Änderungen daran vornehmen und die Änderungen für die Skripte sichtbar machen kann, die sie verwenden, ohne die neu installieren zu müssen Ei von PyPI nach jedem Wechsel.


Haben Sie noch irgendwo ein Quodlibet-Plugin für Python? Das klingt wirklich cool.
Peter Turner

@ PeterTurner Das ist wahrscheinlich Quodlibet selbst - es ist in Python geschrieben
Florian Brucker

Antworten:


71

Die .egg-info-Verzeichnisse werden nur erstellt, wenn --single-version-extern-verwaltet zum Installieren des Eies verwendet wurde. "Normalerweise" würde die Installation eines Eies ein einzelnes Verzeichnis (oder eine Zip-Datei) erstellen, das sowohl den Code als auch die Metadaten enthält.

pkg_resources (die Bibliothek, die die Metadaten liest) verfügt über eine Funktion, mit requireder eine bestimmte Version des Pakets angefordert werden kann. Bei regulären Importen im "alten Stil" hackt easy_install eine .pth-Datei, um das Eierverzeichnis auf sys.path abzurufen. Für --single-version-extern-verwaltet ist dieses Hacken nicht erforderlich, da nur eine einzige Version installiert wird (über die Pacakging-Infrastruktur des Systems, z. B. rpm oder dpkg). Die Ei-Info ist für Anwendungen, die require(oder einen der anderen Bindungsmechanismen von pkg_resources) verwenden, weiterhin enthalten.

Wenn Sie ein Paket durch Hardlinking installieren möchten, empfehle ich die Verwendung von "setup.py Develop". Dies ist ein Befehl von setuptools, der das Ei nicht installiert, sondern es auf der gesamten Website verfügbar macht. Zu diesem Zweck wird eine Ei-Link-Datei erstellt, damit pkg_resources sie finden kann, und eine .pth-Datei wird bearbeitet, damit der reguläre Import sie finden kann.


26
Um die Auswirkungen von umzukehren setup.py develop, verwenden Siesetup.py develop -u
Codewarrior

Beachten Sie, dass es sich um Kleinbuchstaben handelt -u. Großbuchstaben machen -Uetwas anderes.
CGFoX
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.