[Zope-dev] Missing manifest in .pyd files for Win32 binary distributions

Michael Madsen michael at birdiesoft.dk
Sat Apr 21 10:48:20 UTC 2012


Apologies if this is the wrong place to post this, but I couldn't seem to find a bug tracker where this would fit.

I have a local Apache running on a Windows machine with mod_wsgi and Python 2.6, and I've just upgraded it to Apache 2.4.

In doing so, I started getting errors from a file in zope.interface, specifically _zope_interface_coptimizations.pyd - Visual C++ complained that the run-time wasn't being initialized correctly (R6034).

It turns out this is because this file is missing a manifest to specify that it needs the Visual C++ 2008 runtime. This wasn't a problem on Apache 2.2, because Apache 2.2 was compiled with Visual C++ 2008 - Apache 2.4, however, was compiled with Visual C++ 2010, which causes the .pyd file to use the wrong runtime - and that means Python 2.6 can't use it. Once I added the same manifest to the .pyd, everything worked just fine.

A little research told me that the zope.interface eggs were compiled by a buildbot (zope.wineggbuilder), so it would seem that this needs to be modified to add a manifest when the corresponding Python version is using one. I don't know if any other parts of Zope use .pyd files, but I assume the issue applies to those as well.

I don't know how your buildbot is set up, so I don't know how easy it would be for you to fix this - different Python versions are built against different run-times, and not all of them will use a manifest, nor will the manifest be the same across all versions that do. If you have access to Visual C++ tools from the builder, they have a tool mt.exe which can add a manifest quite easily.

Again, I apologize if this is the wrong place, and if that is the case, I hope someone can point me in the right direction. If you have any questions, I'll do my best to answer them.

Michael Madsen



More information about the Zope-Dev mailing list