实现python扩展的C API方法过程全纪录(windows)

第一步:安装编译器

推荐使用mingw,使用最为便利,可以避免各种难以记忆和看不懂的设置。

下载只需安装其中的gcc部分即可,并且将编译器所在文件夹添加的环境变量path之下,例如:

pah = %path%;c:\minGW\bin

第二步:安装python

推荐使用pythonxy,安装最为方便,省去很多不必要的麻烦。

第三步:写一段测试代码

基本方法就是:C函数+c API 包装器,静态数组,模块初始化

//pythonc.c
#include <python.h>
#include <stdio.h>

void hello_pythoncapi(void){
	printf("hello python");
}

static PyObject* pythoncapi(PyObject *self,PyObject*args){
	char *inArgs = NULL;
	PyArg_ParseTuple(args,"s",&inArgs);
	printf("%s\n",inArgs);
	hello_pythoncapi();
	return PyString_FromFormat("hello PYHTON C API");
}

static PyMethodDef methods[]={
{"pythoncapi",pythoncapi,METH_VARARGS,"test python extension"},
{ NULL, NULL}
};

/*__declspec(dllexport)*/ void initpythonc(void) /*the string after "init" must be same with code file */
{
	Py_InitModule("pythonc",methods);/*the 1st parameter string must be same with code file */
}

第四步: 编译

打开cmd,并运行如下命令

gcc c:\MinGW\pythonc.c -shared -Ic:\Python27\include -Lc:\Python27\libs -lpython27 -o pythonc.pyd

图中的当前路径是c:\Python27\libs,编译成功后,pythonc.pyd将保存在这个路径下。

第五步 使用扩展库

将pythonc.pyd拷贝至python路径下的Lib\site_packages文件夹,可以使用import导出模块并调用pythoncapi()函数。

说明:

-Ic:\Python27\include 用于指明头文件python.h所在的文件夹

-Lc:\Python27\libs 和-lpython27一起指明了python c api函数库所在的文件夹与库文件名称(Windows下为libpython27.a)

参考:

http://www.linuxidc.com/Linux/2012-02/55038.htm

http://oldwiki.mingw.org/index.php/Python%20extensions

https://docs.python.org/2/extending/extending.html#

时间: 2024-10-12 03:54:27

实现python扩展的C API方法过程全纪录(windows)的相关文章

【Python扩展库的安装方法】

1.pip安装 例:pip install Django 可在Python安装文件的scripts目录下运行pip查看使用帮助 2.tar.gz文件安装 将文件下载后,对文件进行解压,进入解压目录,通过python命令安装 例:python3 setup.py install 3..whl文件安装 下载文件后通过Python命令安装 例:pip install *****.whl 4.GitHub克隆项目安装 首先安装git客户端,通过git clone命令将项目克隆到本地 例:git clon

Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)

刚刚买了一个网件wndr4300路由器,快递还没送来就已经开始琢磨刷机的事了.卖家提供了一个明月的op固件,里面功能超级多但是非常臃肿,我在hg255d上的使用经验告诉我这样臃肿的包非常耗费CPU资源,而且会导致网速变慢和无故重启.恩山上大神编译的几乎都是添加了很多应用的固件.而我只需要一个ss功能就够了,最好有luci界面,所以决定自己编译出ipk包放到路由器上使用opkg安装. 首先去openwrt ss的github官网,https://github.com/shadowsocks/ope

python爬取豆瓣250存入mongodb全纪录

用了一周的时间总算搞定了,跨过了各种坑,总算调试成功了,记录如下: 1.首先在cmd中用命令行建立douban爬虫项目 scrapy startproject douban 2.我用的是pycharm,导入项目后, 1)在items.py中定义爬取的字段 items.py代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 # -*- coding: utf-8 -*- import scrapy class DoubanBookItem(scrapy.Item):     name

[转]apache的源码安装详细过程全纪录

原文链接:http://www.jb51.net/article/59474.htm 文中  开机启动需要修改 而且特别麻烦 还的配置php   否则不认识php文件  郁闷!只能做参考了!

python扩展实现方法--python与c混和编程

Reference: http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html python 头文件在的位置:/usr/include/python2.7                                  /usr/local/include/python2.7 前言(更新:更方便易用的方式在http://www.swig.org/tutorial.html) 大部分的Python的扩展都是用C语言写的,

python扩展实现方法--python与c混和编程 转自:http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html

前言 需要扩展Python语言的理由: 创建Python扩展的步骤 1. 创建应用程序代码 2. 利用样板来包装代码 a. 包含python的头文件 b. 为每个模块的每一个函数增加一个型如PyObject* Module_func()的包装函数 c. 为每个模块增加一个型如PyMethodDef ModuleMethods[]的数组 d. 增加模块初始化函数void initMethod() 3. 编译与测试 a. 创建setup.py b. 通过运行setup.py来编译和连接你的代码 c.

使用Python扩展NotePad++

要使用Python扩展NotePad++,首先需要为NotePad++安装Python Script插件,NotePad++插件的安装方法可以参考这里. 安装了Python Script插件后,在菜单的Plugins下就会看到Python Script菜单了. Python Script介绍 点击Plugins->Python Script->New Script菜单,打开的目录就是用户的Python脚本存放的目录.将Python脚本放到该目录下后,在Python Script下的Script

python扩展之C++篇

首先贴几个帖子 https://eastlakeside.gitbooks.io/interpy-zh/content/c_extensions/swig.html http://blog.csdn.net/a8572785/article/details/10427521 http://blog.csdn.net/marscrazy_90/article/details/14045683 混合编程能够在性能和开发速度上有很好的平衡,今天学习了python调用c++函数的三种方法 python使

Python机器视觉编程环境搭建方法

Python机器视觉编程环境搭建方法 1. Why Python C/C++ 早期的计算机视觉领域大多数程序都是用C/C++编写.随着计算机硬件速度越来越快,开源平台越来越多,开发者选择计算机视觉算法的实现语言变得更加灵活,代码编写的效率和易用性成为选择编写语言时的考虑因素,而不再仅仅只考虑执行效率. Python Python的跨平台.开放性.易用性,加之丰富的资源使其成为近年来越来越多开发者的选择.国外出版了大量的Python编程.学习书籍,亚马逊搜索Python图书,结果列表长达100页共