在windows下编译python模块时,有时会碰到这样的提示:
error: Python was built with Visual Studio version 7.1, and extensions need to be built with the same version of the compiler, but it isn't installed.
这是在我编译zope.interface模块是碰到的问题,记得以前自己编译pypcap时也碰到过,当时怕麻烦,就直接装了个exe版本,这次又碰到了,可是网上没有zope.interface在python25下的版本了,看来这次不能偷懒了……
我的解决方法:
1.安装MinGW,也就是安装C编译器
2.把C:\MinGW\bin添加到你的PATH的环境变量中,注意,把路径调成你的安装路径
3.在C:\Python25\Lib\distutils下新建一个名为distutils.cfg的文件,内容为:
下面是Python的一个C扩展模块的例子:
(注意下面两个文件放到同一个文件夹内)
文件:add.c
#include<Python.h>
static PyObject* add(PyObject* self,PyObject* args);
static PyObject* add(PyObject* self,PyObject* args)
{
int x=0;
int y=0;
int z=0;
if(!PyArg_ParseTuple(args,"i|i",&x,&y))
return NULL;
z = x+y;
return Py_BuildValue("i",z);
}
static PyMethodDef addMethods[]=
{
//模块内的唯一函数,函数名为add
{"add",add,METH_VARARGS,"Execute a shell command."},
{NULL,NULL,0,NULL}
};
//注意函数名是initdemo是不能随便改的,这是demo模块的初始化函数
PyMODINIT_FUNC initdemo()
{
Py_InitModule("demo",addMethods);
}
|
文件:setup.py
#coding:utf-8
from distutils.core import setup,Extension
#扩展模块名是demo
module1 = Extension('demo',sources = ['add.c'])
setup(name='PachageName',version='1.0',\
description='This is a demo package',ext_modules=[module1])
|
命令行执行命令:setup.py build
之后,如果没有错误的话,会在同一目录下生成一个名为build的目录,我的是python2.5,而且是XP下,所以build/lib.win32-2.5/demo.pyd就是生成的模块了
到这个/build/lib.win32-2.5目录下,import demo,就导入demo模块了……
阅读(3915) | 评论(0) | 转发(0) |