[Numpy-discussion] failed to build numpy and Numeric in Windows
Gerard Vermeulen
gerard.vermeulen at grenoble.cnrs.fr
Fri Jan 12 15:54:15 EST 2007
On Fri, 12 Jan 2007 14:07:23 -0600
"Zhou, Mi" <Mi.Zhou at STJUDE.ORG> wrote:
> Hi,
>
> Python on the same machine was built with MSVS2005. I think it is
> capable of building python modules.
>
> Interestingly, if I replace "floor" with "ceil" in that line of code. It
> will build just fine, and of course, the Numeric.floor() will work just
> like Numeric.ceil():
>
> static void * floor_data[] = { (void *)ceil, (void *)ceil, (void
> *)"floor", };
>
> Thanks,
>
> Mi
>
I have found that I needed to patch the Python-2.4.3 distutils to build
numpy and Numeric with MSVC-2005 (check the compiler flags):
--- Python-2.4.3/Lib/distutils/msvccompiler.py.win64 2005-08-07 22:50:37.000000000 +0200
+++ Python-2.4.3/Lib/distutils/msvccompiler.py 2006-06-25 08:45:14.812500000 +0200
@@ -206,15 +206,21 @@
def __init__ (self, verbose=0, dry_run=0, force=0):
CCompiler.__init__ (self, verbose, dry_run, force)
self.__version = get_build_version()
- if self.__version >= 7:
+ if 8.0 > self.__version >= 7:
self.__root = r"Software\Microsoft\VisualStudio"
self.__macros = MacroExpander(self.__version)
else:
+ # XXX: don't know how to get the MSVS2005 info from the registry.
+ # So, use of distutils in a MSVS2005 32 or 64 bit command prompt
+ # to get the info from the environment.
self.__root = r"Software\Microsoft\Devstudio"
self.initialized = False
def initialize(self):
- self.__paths = self.get_msvc_paths("path")
+ if self.__version >= 8.0:
+ self.__paths = os.environ['PATH'].split(os.pathsep)
+ else:
+ self.__paths = self.get_msvc_paths("path")
if len (self.__paths) == 0:
raise DistutilsPlatformError, \
@@ -227,22 +233,38 @@
self.lib = self.find_exe("lib.exe")
self.rc = self.find_exe("rc.exe") # resource compiler
self.mc = self.find_exe("mc.exe") # message compiler
- self.set_path_env_var('lib')
- self.set_path_env_var('include')
+ if self.__version < 8.0:
+ self.set_path_env_var('lib')
+ self.set_path_env_var('include')
# extend the MSVC path with the current path
- try:
- for p in string.split(os.environ['path'], ';'):
- self.__paths.append(p)
- except KeyError:
- pass
- os.environ['path'] = string.join(self.__paths, ';')
+ if self.__version < 8.0:
+ try:
+ for p in string.split(os.environ['path'], ';'):
+ self.__paths.append(p)
+ except KeyError:
+ pass
+ os.environ['path'] = string.join(self.__paths, ';')
self.preprocess_options = None
- self.compile_options = [ '/nologo', '/Ox', '/MD', '/W3', '/GX' ,
- '/DNDEBUG']
- self.compile_options_debug = ['/nologo', '/Od', '/MDd', '/W3', '/GX',
- '/Z7', '/D_DEBUG']
+ if self.__version < 8.0:
+ self.compile_options = [
+ '/nologo', '/Ox', '/MD', '/W3', '/GX' , '/DNDEBUG']
+ self.compile_options_debug = [
+ '/nologo', '/Od', '/MDd', '/W3', '/GX', '/Z7', '/D_DEBUG']
+ else:
+ # MSC-8.0 using /Ox (=/Ob2gity /Gs) chokes on DLLs containing:
+ #
+ # #include <math.h>
+ # static void *p = (void *)ceil;
+ #
+ # because of the /Oi option (Numeric and NumPy use such code).
+ # Moreover, the compiler flags /Og as deprecated.
+ self.compile_options = [
+ '/nologo', '/Ob2ty', '/MD', '/W3', '/EHsc' , '/DNDEBUG']
+ self.compile_options_debug = [
+ '/nologo', '/Od', '/MDd', '/W3', '/EHsc', '/Z7', '/D_DEBUG']
+
self.ldflags_shared = ['/DLL', '/nologo', '/INCREMENTAL:NO']
if self.__version >= 7:
This is clearly a compiler bug, that may go away with a bug fix.
Gerard
> -----Original Message-----
> From: numpy-discussion-bounces at scipy.org
> [mailto:numpy-discussion-bounces at scipy.org] On Behalf Of Robert Kern
> Sent: Friday, January 12, 2007 1:55 PM
> To: Discussion of Numerical Python
> Subject: Re: [Numpy-discussion] failed to build numpy and Numeric in
> Windows
>
> Zhou, Mi wrote:
> > Hi,
> >
> > I am trying to build Numpy-1.01 in windows using "python setup.py
> > build". My C compiler is MSVS2005.
>
> Hmm. I was pretty sure that MSVS2005 was not capable of building Python
> extension modules that work with the official Python interpreter builds.
> That
> doesn't explain or solve the problem that you state, but if the problem
> is
> restricted to MSVS2005, it may not be worth solving.
>
> --
> Robert Kern
>
> "I have come to believe that the whole world is an enigma, a harmless
> enigma
> that is made terrible by our own mad attempt to interpret it as though
> it had
> an underlying truth."
> -- Umberto Eco
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
>
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
More information about the NumPy-Discussion
mailing list