Hi, I want to run a few C code inside Python on Windows 7, 64-bit PC, Canopy 1.5.2.2785. I made a few trials, but I forget the detail commands I made on compiler setting. One thing I remember is that I added one file: distutils.cfg, whose content is: [build] compiler=mingw32
And another thing I did was an option to msvc for the compiler, but I don't remember where the file was. Now, it always search for 'msvccompiler', though I think it should use mingw32, as the following: import scipy.weave In [16]: weave.test() Running unit tests for scipy.weave NumPy version 1.9.2..................................S.SSS....SSSSSS................................................................................................. NumPy is installed in C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy SciPy version 0.16.1 SciPy is installed in C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy Python version 2.7.6 | 64-bit | (default, Sep 15 2014, 17:36:35) [MSC v.1500 64 bit (AMD64)] nose version 1.3.4 ---------------------------------------------------------------------- Ran 146 tests in 5.652s OK (SKIP=10) Out[16]: <nose.result.TextTestResult run=146 errors=0 failures=0> In [17]: a = 1 In [18]: weave.inline('printf("%d\\n",a);',['a']) No module named msvccompiler in numpy.distutils; trying from distutils objdump.exe: C:\Users\jj\AppData\Local\Enthought\Canopy\User\python27.dll: File format not recognized Looking for python27.dll --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-18-90fb916ec9e2> in <module>() ----> 1 weave.inline('printf("%d\\n",a);',['a']) C:\Users\rj\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\weave\inline_tools.pyc in inline(code, arg_names, local_dict, global_dict, force, compiler, verbose, support_code, headers, customize, type_converters, auto_downcast, newarr_converter, **kw) 364 type_converters=type_converters, 365 auto_downcast=auto_downcast, --> 366 **kw) 367 368 function_catalog.add_function(code,func,module_dir) C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\weave\inline_tools.pyc in compile_function(code, arg_names, local_dict, global_dict, module_dir, compiler, verbose, support_code, headers, customize, type_converters, auto_downcast, **kw) 494 # setting. All input keywords are passed through to distutils 495 mod.compile(location=storage_dir,compiler=compiler, --> 496 verbose=verbose, **kw) 497 498 # import the module and return the function. Make sure C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\weave\ext_tools.pyc in compile(self, location, compiler, verbose, **kw) 371 success = build_tools.build_extension(file, temp_dir=temp, 372 compiler_name=compiler, --> 373 verbose=verbose, **kw) 374 if not success: 375 raise SystemError('Compilation failed') C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\scipy\weave\build_tools.pyc in build_extension(module_path, compiler_name, build_dir, temp_dir, verbose, **kw) 277 environ = copy.deepcopy(os.environ) 278 try: --> 279 setup(name=module_name, ext_modules=[ext],verbose=verb) 280 finally: 281 # restore state C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\core.pyc in setup(**attr) 167 new_attr['distclass'] = NumpyDistribution 168 --> 169 return old_setup(**new_attr) 170 171 def _check_append_library(libraries, item): C:\Users\jj\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.2.2785.win-x86_64\lib\distutils\core.pyc in setup(**attrs) 150 if ok: 151 try: --> 152 dist.run_commands() 153 except KeyboardInterrupt: 154 raise SystemExit, "interrupted" C:\Users\jj\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.2.2785.win-x86_64\lib\distutils\dist.pyc in run_commands(self) 951 """ 952 for cmd in self.commands: --> 953 self.run_command(cmd) 954 955 # -- Methods that operate on its Commands -------------------------- C:\Users\jj\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.2.2785.win-x86_64\lib\distutils\dist.pyc in run_command(self, command) 970 cmd_obj = self.get_command_obj(command) 971 cmd_obj.ensure_finalized() --> 972 cmd_obj.run() 973 self.have_run[command] = 1 974 C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\command\build_ext.pyc in run(self) 92 verbose=self.verbose, 93 dry_run=self.dry_run, ---> 94 force=self.force) 95 self.compiler.customize(self.distribution) 96 self.compiler.customize_cmd(self) C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\ccompiler.pyc in new_compiler(plat, compiler, verbose, dry_run, force) 560 raise DistutilsModuleError(("can't compile C/C++ code: unable to find class '%s' " + 561 "in module '%s'") % (class_name, module_name)) --> 562 compiler = klass(None, dry_run, force) 563 log.debug('new_compiler returns %s' % (klass)) 564 return compiler C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\mingw32ccompiler.pyc in __init__(self, verbose, dry_run, force) 89 # 1. Check for import library on Windows. Build if it doesn't exist. 90 ---> 91 build_import_library() 92 93 # Check for custom msvc runtime library on Windows. Build if it doesn't exist. C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\mingw32ccompiler.pyc in build_import_library() 376 arch = get_build_architecture() 377 if arch == 'AMD64': --> 378 return _build_import_library_amd64() 379 elif arch == 'Intel': 380 return _build_import_library_x86() C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\mingw32ccompiler.pyc in _build_import_library_amd64() 397 % (out_file, dll_file)) 398 --> 399 generate_def(dll_file, def_file) 400 401 cmd = ['dlltool', '-d', def_file, '-l', out_file] C:\Users\jj\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\mingw32ccompiler.pyc in generate_def(dll, dfile) 276 break 277 else: --> 278 raise ValueError("Symbol table not found") 279 280 syms = [] ValueError: Symbol table not found How can I set correctly to use inline C code? Thanks -- https://mail.python.org/mailman/listinfo/python-list