2010-11-22 4 views
1

Letzten Freitag habe ich eine RPM-Spezifikation für mein Django-Projekt erstellt. Der RPM erstellt einen virtualenv, lädt Abhängigkeiten über pip herunter und legt alles in die Pakete. Heute habe ich herausgefunden, dass BeautifulSoup 3.2 veröffentlicht wurde. Glücklicherweise hatte ich meine BeautifulSoup-Version in der requirements.txt angeheftet, also habe ich herausgefunden, dass der Build fehlgeschlagen ist.Wie verwende ich eine virtualenv-basierte Bereitstellungsmethode, ohne auf jede einzelne Upstream-Version zu aktualisieren?

Jetzt ist eine ganz andere Sache: Wie vermeide ich es, Sachen in der Zukunft zu aktualisieren? BeautifulSoup hat alle früheren Versionen von PyPI gelöscht, sodass ich keine Version herunterladen kann, gegen die ich tatsächlich getestet habe. pip 's Download-Cache hilft auch hier nicht, seit pip versucht immer zuerst PyPI zu überprüfen.

Können Sie etwas empfehlen, um diese Situation zu vermeiden?

Antwort

2

Erstens ist dies eine ungewöhnliche Situation. Ich habe noch nie ein anderes Paket gesehen, das alle alten Releases wie BeautifulSoup löscht. Ich betrachte das eher nutzerfeindliches Verhalten, außer vielleicht in Fällen einer ernsthaften Sicherheitslücke.

Das heißt, wenn Sie einen zuverlässigen Build-Prozess mit Pip wollen, müssen Sie wirklich alle Pakete spiegeln, die Sie lokal verlassen. Es ist nicht schwer zu tun; Sie können die Option --download (oder Ihren vorhandenen Pip-Cache) von pip verwenden, um alle Paket-Tarballs abzurufen und sie dann in ein indiziertes, vom Web verwaltetes Verzeichnis ablegen und --find-links in Ihrer Anforderungsdatei verwenden, um dort auf pip zu zeigen (Plus - kein Index, um zu sagen, dass PyPI nicht verwendet werden soll.

+0

Wird wahrscheinlich so oder vielleicht ein "lokales Pip Light" - nur die Reißverschlüsse halten. Vielen Dank. –

Verwandte Themen