PyPI bdist_wininst upload failing

S

Steven Bethard

I just tried to upload new versions of the argparse module to PyPI, but
it seems like I can no longer upload Windows installers:

$ setup.py sdist bdist_wininst upload
...
running upload
Submitting dist\argparse-0.8.0.zip to http://www.python.org/pypi
Server response (200): OK
Submitting dist\argparse-0.8.0.win32.exe to http://www.python.org/pypi
Upload failed (400): Bad Request

Anyone know what I'm doing wrong? (I've always been able to upload
bdist_wininst packages to PyPI in the past.)

STeVe
 
S

Steven Bethard

Steven said:
I just tried to upload new versions of the argparse module to PyPI, but
it seems like I can no longer upload Windows installers:

$ setup.py sdist bdist_wininst upload
...
running upload
Submitting dist\argparse-0.8.0.zip to http://www.python.org/pypi
Server response (200): OK
Submitting dist\argparse-0.8.0.win32.exe to http://www.python.org/pypi
Upload failed (400): Bad Request

Anyone know what I'm doing wrong? (I've always been able to upload
bdist_wininst packages to PyPI in the past.)

Still haven't figured this out yet, but I discovered that I get a
slightly more informative message if I do the upload manually with the
PyPI form. It then says:

Error processing form

invalid distribution file

Looks like this originates from:

https://svn.python.org/packages/trunk/pypi/webui.py

down near the bottom in the file_upload() method. I can't figure out
which "invalid distribution file" error is being triggered, but in
looking around, I saw that is_distutils_file() in:

https://svn.python.org/packages/trunk/pypi/verify_filetype.py

says:

if filename.endswith('.exe'):
# check for valid exe
if filetype != 'bdist_wininst':
return False

try:
t = StringIO.StringIO(content)
t.filename = filename
z = zipfile.ZipFile(t)
l = z.namelist()
except zipfile.error:
return False

for zipname in l:
if not safe_zipnames.match(zipname):
return False

That seems a little weird to me. Are the bdist_wininst exe files really
zip files? Or did I just misunderstand what "content" is?

STeVe
 
J

John Machin

Steven said:
I just tried to upload new versions of the argparse module to PyPI, but
it seems like I can no longer upload Windows installers:
[snip]
That seems a little weird to me. Are the bdist_wininst exe files really
zip files? Or did I just misunderstand what "content" is?

STeVe

They are exe files with a zip appended. Try out the above code on your
file; it may just help you suss out what the problem is.
E.g.:['PURELIB/xlrd-0.6.1a4-py2.5.egg-info', 'PURELIB/xlrd/biffh.py',
.... snip ...
'SCRIPTS/xlrdnameAPIdemo.py']
HTH,
John
 
S

Steven Bethard

John said:
Steven said:
I just tried to upload new versions of the argparse module to PyPI, but
it seems like I can no longer upload Windows installers:
[snip]
That seems a little weird to me. Are the bdist_wininst exe files really
zip files? Or did I just misunderstand what "content" is?

They are exe files with a zip appended. Try out the above code on your
file; it may just help you suss out what the problem is.
E.g.:['PURELIB/xlrd-0.6.1a4-py2.5.egg-info', 'PURELIB/xlrd/biffh.py',
... snip ...
'SCRIPTS/xlrdnameAPIdemo.py']

Interesting. Thanks!
['.../lib/argparse-0.8.0-py2.5.egg-info', '.../lib/argparse.py']

Interestingly, it looks like none of these are "safe_zipnames" according to:

https://svn.python.org/packages/trunk/pypi/verify_filetype.py

I wonder why that is...

Also, I couldn't get the StringIO code from there to work:
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\Python25\lib\zipfile.py", line 346, in __init__
self._GetContents()
File "C:\Python25\lib\zipfile.py", line 366, in _GetContents
self._RealGetContents()
File "C:\Python25\lib\zipfile.py", line 378, in _RealGetContents
raise BadZipfile, "File is not a zip file"
BadZipfile: File is not a zip file

STeVe
 
G

Gabriel Genellina

En Sun, 27 May 2007 12:19:03 -0300, Steven Bethard
Also, I couldn't get the StringIO code from there to work:

Use open("...","rb").read() - the "b" is important on Windows.
 
S

Steven Bethard

Gabriel said:
En Sun, 27 May 2007 12:19:03 -0300, Steven Bethard


Use open("...","rb").read() - the "b" is important on Windows.

Ahh, great. Thanks.

So any ideas why distutils is generating a bdist_wininst installer with
file names like:

lib/argparse-0.8.0-py2.5.egg-info
lib/argparse.py

instead of what John Machin had:

PURELIB/xlrd-0.6.1a4-py2.5.egg-info
PURELIB/xlrd/biffh.py

The ones with 'lib' instead of 'PURELIB' will get rejected by the
safe_zipnames regular expression in verify_filetype.py:

re.compile(r'(purelib|platlib|headers|scripts|data).+', re.I)

Is there something I need to do when running 'setup.py bdist_wininst' to
get 'PURELIB' instead of 'lib'?

STeVe
 
S

Steven Bethard

Steven said:
Ahh, great. Thanks.

So any ideas why distutils is generating a bdist_wininst installer with
file names like:

lib/argparse-0.8.0-py2.5.egg-info
lib/argparse.py

instead of what John Machin had:

PURELIB/xlrd-0.6.1a4-py2.5.egg-info
PURELIB/xlrd/biffh.py

The ones with 'lib' instead of 'PURELIB' will get rejected by the
safe_zipnames regular expression in verify_filetype.py:

re.compile(r'(purelib|platlib|headers|scripts|data).+', re.I)

Is there something I need to do when running 'setup.py bdist_wininst' to
get 'PURELIB' instead of 'lib'?

I figured it out. As suggested here:

http://peak.telecommunity.com/DevCenter/EasyInstall#administrator-installation

I had created a distutils.cfg to redirect my installs from the regular
site-packages directory.

Since the distutils.cfg settings are read in for all distutils uses at
the command line, they were also being read in when I tried to run
"setup.py bdist_wininst", and so all my filenames were getting the
altered paths instead of the regular PURELIB ones.

Thanks everyone for the help!

STeVe
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,050
Latest member
AngelS122

Latest Threads

Top