2015-02-24 13 views
15

Ich habe ein Paket in PyPI namens virtdc erstellt. Ich habe einige Änderungen vorgenommen und zwei verschiedene Versionen 0.1.0 und 0.1.1 hochgeladen. Jetzt habe ich die Version 0.1.1 über die PyPI-Weboberfläche gelöscht und versuche erneut mit derselben Versionsnummer hochzuladen. Es gibt mir Fehler wie folgtPyPI 400 Upload Fehler

... 
Writing virtdc-0.1.2/setup.cfg 
Creating tar archive 
removing 'virtdc-0.1.2' (and everything under it) 
running register 
Registering virtdc to http://pypi.python.org/pypi 
Server response (200): OK 
running upload 
Submitting dist/virtdc-0.1.2.tar.gz to http://pypi.python.org/pypi 
Upload failed (400): This filename has previously been used, you should use a different version. 

Und PyPI erlaubt nicht mehr als 4 Versionen für ein Paket. Also müssen wir einige Versionen löschen und erneut hochladen.

Auch nach diesem Upload-Fehler ist die erste Inhaltsbeschreibung verfügbar. Der Download-Link ist jedoch nicht verfügbar. Sie können mein Paket finden here

Könnte jemand mir dabei helfen? Dank

+0

Siehe http://comments.gmane.org/gmane.comp.python.distutils.devel/22739 "Ich habe Änderungen an PyPI übertragen, wo es nicht mehr möglich ist, einen Dateinamen wiederzuverwenden, und der Versuch, dies zu tun, ergibt einen 400 Fehler" –

+0

Die (ähnliche oder) gleiche Diskussion auf dem [packaging-issue issue tracker] (https://github.com/pypa/packaging-problems/issues/74) auf GitHub. - TL; DR Kein Fix für dieses PyPI-Verhalten bis heute. – Peterino

Antwort

17

Ich hatte das gleiche Problem, und es scheint, dass es nicht gerade fix ist:

http://sourceforge.net/p/pypi/support-requests/468

Wenn Sie jedoch eine Quelldistribution hochladen möchten, gibt es eine Abhilfe ist, die nicht zu hässlich ist. Sie können ein "Zip" -Archiv anstelle eines "tar.gz" -Archivs erstellen. Sie können dies z. über

python setup.py sdist --formats=zip 

Auf diese Weise erhalten Sie einen anderen Dateinamen. Dann könnten Sie den Upload-Befehl direkt

python setup.py sdist --formats=zip upload 

anhängen Oder Sie könnten twine nach Gebäude zum Hochladen verwenden:

twine upload dist/* 
+3

Ich sah auch den Vorschlag eine '.post1' Version zu veröffentlichen. Das ist eine PEP440-konforme Post-Release-Version für sehr kleine Korrekturen (wie das Problem zu beheben, über das du redest). –

+0

wie von @ Pryce http://stackoverflow.com/a/32443905/1816995 darauf hingewiesen, funktioniert das nicht mehr. – mpacer

4

Die akzeptierte Antwort nicht mehr funktioniert; PyPi überprüft nun den Stammdateinamen und ignoriert Erweiterungen, um festzustellen, ob es sich um ein Duplikat handelt. Das Hochladen eines Zip-Formats gibt den gleichen Fehler wie ein Gztar. Die .post1 Versionierung ermöglicht es Ihnen, ein neues Release zu erstellen, das> = die alte Version ist, aber für Dinge wie das Hochladen des falschen Inhalts oder das Packen einer Datei, die nicht in einem Release enthalten sein sollte, bleiben Sie mit einer Versionsänderung stecken.

Um dies zu umgehen, können Sie auf die PyPi-Website gehen und die Version manuell löschen (nicht die Release-Datei), die den fehlerhaften Upload hat. Sie werden darauf hingewiesen, dass dies nicht rückgängig gemacht werden kann. Stellen Sie daher sicher, dass Sie ein Release und insbesondere das Release löschen, das Sie löschen möchten. Sobald es gelöscht ist, können Sie Ihre Distribution erneut hochladen, als ob sie nie zuvor existiert hätte und die doppelte 400-Antwort wird nicht auftreten. Natürlich missbrauchen Sie das nicht und ändern den Code unter den Nasen der Leute, aber wenn Sie den falschen Inhalt hochladen, ist das ein Workaround für die Richtlinien von PyPi.

+2

Das Löschen der Freigabe funktioniert nicht mehr. Auch das Löschen des gesamten Projekts und erneutes Versuchen funktioniert nicht. Siehe: http://comments.gmane.org/gmane.comp.python.distutils.devel/22739 –

+0

Ja. Das Löschen der Freigabe funktioniert nicht mehr. – akozin

6

Das ist für mich gearbeitet:

  1. Löschen Sie die build, dist und <package name>.egg-info Ordner in Ihrem Stammverzeichnis.
  2. Ändern Sie die Versionsnummer in Ihrer setup.py Datei.
  3. Erstellen Sie die Verteilung erneut. Beispiel: python setup.py sdist bdist_wheel
  4. Verteilung erneut hochladen. z.B.: twine upload dist/*
  5. viel Spaß! :-)