[Numpy-discussion] Compiling NumPy on Windows for Python 3.3 with MSVC 2010

Peter Cock p.j.a.cock@googlemail....
Tue Nov 20 07:59:08 CST 2012


On Fri, Nov 16, 2012 at 10:08 AM, Christoph Gohlke <cgohlke@uci.edu> wrote:
> On 11/16/2012 1:28 AM, Peter Cock wrote:
>> On Thu, Nov 15, 2012 at 6:15 PM, Christoph Gohlke <cgohlke@uci.edu> wrote:
>>>
>>> Naturally the file would be named msvc10compiler.py but the name may be
>>> kept for compatibility reasons. AFAIK msvc10 does not use manifests any
>>> longer for the CRT dependencies and all the code handling msvc9
>>> manifests could be removed for Python 3.3. I have been building
>>> extensions for Python 3.3 with msvc10 and this distutils patch for some
>>> months and did not notice any issues.
>>>
>>
>> Sounds Python 3.3 needs a fix then - have you reported this?
>> If not, could you report it (since you know far more about the
>> Windows build system than I do)?
>>
>> If it will be fixed in Python itself, then perhaps a manual hack like
>> this will be enough for NumPy in the short term. Otherwise, maybe
>> numpy needs to include its own copy of msvc9compiler.py (or
>> msvc10compiler.py)?
>>
>> Thanks,
>>
>> Peter
>
> Could be related to <http://bugs.python.org/issue16296>.
>
> Christoph

Thanks Christoph, you're probably right this is linked to
http://bugs.python.org/issue16296

Note here's an example of the manifest file, obtained from a hack
to Python 3.3's distutitls/msvc9compiler.py - looks like there are
no MSVC version numbers in here that we would need to
worry about:

build\temp.win32-3.3\Release\numpy\core\src\_dummy.pyd.manifest
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

I tried the patch from http://bugs.python.org/issue16296
applied by hand (in place of Christoph's one line change),
and it also seemed to work. I wanted to double check this,
so started by reverting to an unmodified copy of Python 3.3.

I just removed Python 3.3, and reinstalled it afresh using
python-3.3.0.msi, then updated to the latest commit on the
master branch of numpy, as it happens Ralf merging my
fixes to get mingw32  to compile numpy Python 3.3:
724da615902b9feb140cb6f7307ff1b1c2596a40

Now a clean numpy build under Python 3.3 with MSVC 10
"just worked", the error "Broken toolchain: cannot link a simple
C program" has gone. The comments in msvc9compiler.py did
mention this manifest stuff was fragile... but I am puzzled.

My hunch right now is that the order of installation of
MSVC 2010 and Python 3.3 could be important. Either
that, or something else changed on the numpy master
which had an impact?

Regards,

Peter


More information about the NumPy-Discussion mailing list