2009-10-03 5 views
5

Ich habe mehrere Eier auf Pypi, aber bis jetzt habe ich mich immer auf Python 2.5x konzentriert. Ich möchte meine Eier lösen sowohl unter Python 2.5 & Python 2.6 in einer automatisierten Weise dhPython Pypi: Was ist Ihr Prozess für die Veröffentlichung von Paketen für verschiedene Python-Versionen? (Linux)

  1. Lauftests
  2. Erzeugung doc
  3. Vorbereitung Eier
  4. Hochladen auf PyPI

Wie schafft ihr das?

Eine verwandte Frage: Wie markiere ich ein Ei, um "versionsunabhängig" zu sein? funktioniert unter allen Versionen von Python?

Antwort

1

Sie müssen keine Eier für etwas anderes als Windows freigeben, und nur dann, wenn Ihr Paket C-Erweiterungen verwendet, so dass sie Teile kompiliert haben. Ansonsten geben Sie einfach eine Quelldistribution frei. Das wird für alle Python-Versionen auf allen Plattformen ausreichen.

Das Ausführen der Tests für verschiedene Versionen ist schwierig, wenn Sie keinen Buildbot haben. Aber sobald Sie die Tests mit den Releases 2.5 und 2.6 ausgeführt haben, ist es nur eine Frage von python setup.py sdist register upload und es spielt keine Rolle, mit welcher Python-Version Sie das ausführen.

+1

komisch ... Als ich das letzte Mal ein Ei hochgeladen habe, wie Sie es beschreiben, wurde es mit der Python-Version getaggt ... und wenn ich dann * easy_install * mit einer anderen Python-Version versuchte, würde es nicht funktionieren ... Könnten Sie bitte eine Erklärung geben? – jldupont

+0

Nein, das Markieren mit Python-Versionen erfolgt nur, wenn Sie Binärdistributionen erstellen. In deinem Fall hast du bdist_egg benutzt, soweit ich das sehen kann. Da du keinen C-Code hast, solltest du stattdessen sdist verwenden, was ich in deinen Paketen sehen kann. –

+0

@Lennart: DANKE !!! Das muss mein Problem gewesen sein! – jldupont

0

Ich benutze ein Skript, um meine Python-Version zu wechseln, führen Sie die Tests durch, wechseln Sie zur nächsten Python-Version, führen Sie die Tests erneut aus und so weiter. Ich benutze dies um auf 2.3, 2.4, 2.5, 2.6 und 3.1 zu testen. Darüber hinaus führe ich alle meine Tests unter zwei verschiedenen Konfigurationsszenarien aus (C-Erweiterung verfügbar oder nicht), sodass meine vollständige Testsuite zehn Mal ausgeführt wird.

Ich benutze ein ähnliches Skript, um Kits zu bauen, obwohl ich Windows-Installer für jede Version, dann ein Quellkit erstellen.

Zum Hochladen, mache ich einfach alles manuell.

Für Dokumente gibt es nur eine Version zu erstellen, und das ist mit einem Makefile-Ziel gemacht.

Das ist alles für coverage.py, Sie können den Code unter bitbucket sehen, obwohl ich Sie warnen sollte, sind sie .cmd Windows-Skripte.

+0

@ned: Vielen Dank für Ihren Beitrag. Ich bin auf Linux und ich habe keine Windows-Box mehr zur Hand. – jldupont

+0

Derselbe Ansatz funktioniert auch unter Linux. Sie müssen nur entscheiden, wie Sie die Python-Versionen wechseln wollen. –

Verwandte Themen