Frage

Kann mir jemand erklären, wie Ei-info Verzeichnisse an die jeweiligen Module gebunden sind? Zum Beispiel habe ich folgende:

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

Ich gehe davon aus dem Ei-Info-Verzeichnis ist das entsprechende Modul sichtbar Setuptools (easy_install) zu machen, nicht wahr? Wenn ja, wie Setuptools das Ei-info-Verzeichnis in das Modulverzeichnis binden?

Unter der Annahme, dass ich auf dem richtigen Weg bin, und im Interesse des Beispiels ... Wenn ich ein vorhandenes Paket von mir sichtbar machen Setuptool wollte, könnte ich Symlink nur das Modulverzeichnis und das Ei-info-Verzeichnis das site-packages-Verzeichnis? Ich hätte das selbst gerade versucht, aber ich bin nicht sicher, wie zu testen, ob das Paket zu Setuptool sichtbar ist. Bonuspunkte, wenn Sie mir auch sagen, wie dies zu testen:)

Der Hauptgrund Ich versuche, das alles zu verstehen ist, weil ich einige meiner Module in Website-Pakete Symlink möchte, damit ich Änderungen vornehmen können und die Änderungen an den Skripten sichtbar, die sie verwenden, ohne das Ei aus PyPI nach jeder Änderung neu zu installieren.

War es hilfreich?

Lösung

Die .egg-info Verzeichnisse nur erstellt bekommen, wenn --single-Version-extern verwaltet wurde verwendet, um das Ei zu installieren. „Normalerweise“, ein Ei zu installieren würde ein einzelnes Verzeichnis erstellen (oder ZIP-Datei), die beide den Code und die Metadaten enthält.

pkg_resources (das ist die Bibliothek, die die Metadaten liest) eine Funktion require, die verwendet werden können, eine bestimmte Version des Pakets zu beantragen. Für „im alten Stil“, regelmäßige Importe, hackt easy_install eine .pth Datei, um das Ei-Verzeichnis auf sys.path zu bekommen. Für --single-Version-extern verwaltet wird, ist dies Hacking nicht notwendig, da es nur eine einzige Version installiert sein wird (durch das Pacakging Infrastruktur des Systems, beispielsweise Umdrehungen pro Minute oder dpkg). Die Ei-info ist nach wie vor, für Anwendungen enthalten, die require (oder eine der anderen pkg_resources Bindungsmechanismen).

Wenn Sie ein Paket mit Festvernetzung installieren möchten, empfehle ich die Verwendung von „setup.py entwickeln“. Dies ist ein Befehl von Setuptools, die tatsächlich das Ei nicht installieren, sondern stellt sie standortweit. Um dies zu tun, schafft es ein Ei-Link-Datei, so dass pkg_resources es finden kann, und es manipuliert einen .pth Datei, so dass regelmäßige Import kann es finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top