Как мне устранить неполадки с ответом 500 от pypi при попытке выпустить новую версию пакета?

Я пытаюсь выпустить новую версию пакета для pypi. Это использует python 2.7, и в настоящее время я нацелен на питонов 2.6 / 2.7 для потребления.

Текущий выпуск рассматриваемого пакета - 0.0.2-1. (-1 - это соглашение о тегах сборки, которое я где-то читал; я изменяю эту практику, чтобы использовать b для beta, что более актуально.)

По сути, если у меня есть комбинация version (в вызове setup()) и тега сборки (из setup.cfg), который отличается от текущей версии, уже установленной на pypi, обе команды register и upload не работают:

ethan@walrus:~/source/python-mandrel$ python setup.py register
running register
running egg_info
writing requirements to mandrel.egg-info/requires.txt
writing mandrel.egg-info/PKG-INFO
writing top-level names to mandrel.egg-info/top_level.txt
writing dependency_links to mandrel.egg-info/dependency_links.txt
writing entry points to mandrel.egg-info/entry_points.txt
reading manifest file 'mandrel.egg-info/SOURCES.txt'
writing manifest file 'mandrel.egg-info/SOURCES.txt'
running check
Registering mandrel to http://pypi.python.org/pypi
Server response (500): There's been a problem with your request

Это с версией 0.0.3 и тегом сборки b.

Но если я применю этот патч:

--- a/setup.cfg
+++ b/setup.cfg
@@ -1,3 +1,3 @@
 [egg_info]
-tag_build = b
+tag_build = -1

diff --git a/setup.py b/setup.py
index 14761cf..beb8278 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@ import os

 setup(
     name = "mandrel",
-    version = "0.0.3",
+    version = "0.0.2",
     author = "Ethan Rowe",
     author_email = "[email protected]",
     description = ("Provides bootstrapping for sane configuration management"),

Тогда вызов register (и предположительно upload) будет успешным:

ethan@walrus:~/source/python-mandrel$ python setup.py register
running register
...
running check
Registering mandrel to http://pypi.python.org/pypi
Server response (200): OK

Если я изменю тег сборки на -2, скажем, вызов register снова завершится ошибкой. Это говорит о том, что сбой связан с любой строкой общей версии, которая еще не известна pypi.

К сожалению, опция --show-response при использовании upload бесполезна, когда сервер отвечает кодом 500; distutils 'upload просто сообщает о том, что на сервере произошла ошибка, и ничего полезного не происходит.

Есть предложения по устранению неполадок?


person ethanrowe    schedule 01.10.2012    source источник
comment
Вы пробовали Wireshark / tcpdump, чтобы получить полный ответ сервера?   -  person Alex Grönholm    schedule 02.10.2012


Ответы (1)


У меня тоже ошибка 500, проблема для этого с диагнозом от них здесь: https://sourceforge.net/tracker/index.php?func=detail&aid=3573564&group_id=66150&atid=513503.

Отладил с помощью pdb. Опция show-response, по-видимому, не очень полезна. Я помещаю «import pdb; pdb.set_trace ()» в свой Python dist, в distutils/command/register.py в строке 291, который в моем выпуске находится внутри метода post_to_server(). Я делаю "print req.data" прямо здесь, а затем "next" через него, чтобы увидеть ответ, установленный внутри перехвата исключения.

person zzzeek    schedule 01.10.2012
comment
Спасибо. К сожалению, это было более распространено, чем у меня, но мне, по крайней мере, приятно знать, что я не делаю ничего явно глупого (в данном конкретном случае). - person ethanrowe; 02.10.2012