web-dev-qa-db-de.com

pip install lokales Paket im Zielverzeichnis

Ich habe eine Python-Bibliothek, die bei PyPI veröffentlicht wird. Bevor ich jede neue Version der Bibliothek pusche, möchte ich sie testen, indem Sie eine Beispielanwendung aktualisieren, um die neue Version zu verwenden.

Die vorgeschlagene Methode , um dies zu tun, ist im "Entwicklungsmodus" mit dem Flag -e (--editable) zu arbeiten:

$ pip install -e <my package root>

Und das installiert das Paket tatsächlich in meiner globalen Umgebung.

Mein Beispielprogramm ist jedoch für Google App Engine geschrieben. Dies erfordert, dass alle Bibliotheken von Drittanbietern kopiert werden in einen anwendungsspezifischen Ordner (in meinem Fall ./lib). Normalerweise installiere ich Pakete hier mit der Option -t (--target), um zu pipen:

$ pip install -t lib/ <package>

Es scheint jedoch, dass die -e- und -t-Optionen sindnichtkompatibel , und meine Versuche, meine lokale, unveröffentlichte Bibliothek in einem angegebenen Zielordner unter Verwendung beider zu installieren Flaggen zusammen versagen.

Wie kann ich mein Bibliothekspaket testen, indem Sie es vor der Veröffentlichung in einem benutzerdefinierten Verzeichnis installieren?

4
Myk Willis

Für das einmalige Testen eines neuen Pakets scheint die direkte Installation aus dem lokalen Dateisystem die beste Wahl zu sein:

$ cd /my/sample/application
$ pip install -t lib /my/local/package

Diese Installation wird nicht synchron bleiben, da ich weitere Änderungen am lokalen Paket vornehme (wie es wäre, wenn ich pip install --editable verwenden würde), aber für diesen Anwendungsfall kann ich darauf verzichten.

Ich konnte nicht @ pbaranays Antwort erhalten, weil pip install -e "Egg-info" -Dateien verwendet, die anscheinend vom GAE-Skript dev_appserver.py nicht verstanden/durchlaufen werden. Der Vorschlag, eine virtualenv zu erstellen und diese mit der lib zu verknüpfen (anstatt Pakete mit -t direkt in der lib zu installieren), ist jedoch ein guter Vorschlag.

1
Myk Willis

Anpassung der Anweisungen von Jeffrey Godwylls Google App Engine: Recht auf den Verkauf arbeitete für mich:

cd ~/app-engine-project-directory
mkdir lib
ln -s env/lib/python2.7/site-packages lib
pip install -e ../my-local-dependency

(Natürlich müssen Sie möglicherweise die dritte Zeile ändern, je nachdem, welche Python-Version Sie verwenden.)

1
pbaranay

Sie können Ihr Paket mit -e in Ihrer lokalen Python-Installation installieren oder wo immer Sie möchten, und dann dieses örtliche Paketverzeichnis mit lib dir verknüpfen:

ln -s /my/local/package /my/sample/application/lib/
0
Dan Cornilescu