使用SWIG来扩展Python
2017-06-25 12:00
411 查看
一、在Windows上安装SWIG:
1.下载swigwin :http://www.swig.org/download.html (是swigwin不是swig,不然要自己手动搞swig.exe)
2.解压缩包swigwin-3.0.12.zip 至指定目录 (这里假设是D:\swig)
3.配置环境变量(假设python的安装目录为E:\python):
新建PYTHON_INCLUDE 路径为E:\Python\include
新建PYTHON_LIB 路径为E:\Python\libs\python36.lib
修改系统环境变量path 增加一个 D:\swig\swigwin-3.0.12\
注:如果扩展其他语言,套路也类似(swig文档):
4.打开命令行 输入 swig –help 检查是否成功
二、使用swig扩展python:
假设这里扩展的是C语言, (使用C语言写一个判断回文数的函数)
总共需要写3个文件分别是:palindrome.c palindrome.h palindrome.i
1、palindrome.c:
2、palindrome.h:
3、palindrome.i:
然后命令行执行 swig -python palindrome.i , 会在工作目录生成一个 palindrome_wrap.c 和 palindrome.py (名字是%module后面的)
如果是扩展C++ 则再加一个-c++ 即 swig -c++ -python palindrome.i
接着利用distutils生成动态库
python自带一个distutils工具,可以用它来创建python的扩展模块。使用它也很简单,只需要先定义一个配置文件,通常是命名为setup.py
setup.py:
最后在命令行
python setup.py build 会在工作目录生成一个build目录 ,可用的palindrome.py就在..\build\lib\中
1.下载swigwin :http://www.swig.org/download.html (是swigwin不是swig,不然要自己手动搞swig.exe)
2.解压缩包swigwin-3.0.12.zip 至指定目录 (这里假设是D:\swig)
3.配置环境变量(假设python的安装目录为E:\python):
新建PYTHON_INCLUDE 路径为E:\Python\include
新建PYTHON_LIB 路径为E:\Python\libs\python36.lib
修改系统环境变量path 增加一个 D:\swig\swigwin-3.0.12\
注:如果扩展其他语言,套路也类似(swig文档):
4.打开命令行 输入 swig –help 检查是否成功
二、使用swig扩展python:
假设这里扩展的是C语言, (使用C语言写一个判断回文数的函数)
总共需要写3个文件分别是:palindrome.c palindrome.h palindrome.i
1、palindrome.c:
# include <string.h> int is_palindrome(char * text){ int n = strlen(text); for ( int i=0; i<n/2; ++i ){ if ( text[i]!=text[n-i-1] ) return 0; } return 1; }
2、palindrome.h:
int is_palindrome(char * text);
3、palindrome.i:
%module palindrome %{ #include <string.h> %} extern int is_palindrome(char * text);
然后命令行执行 swig -python palindrome.i , 会在工作目录生成一个 palindrome_wrap.c 和 palindrome.py (名字是%module后面的)
如果是扩展C++ 则再加一个-c++ 即 swig -c++ -python palindrome.i
接着利用distutils生成动态库
python自带一个distutils工具,可以用它来创建python的扩展模块。使用它也很简单,只需要先定义一个配置文件,通常是命名为setup.py
setup.py:
from distutils.core import setup, Extension palindrome_module = Extension('_palindrome', sources=['palindrome_wrap.c', 'palindrome.c'], ) setup (name = 'palindrome', version = '0.1', author = "SWIG Docs", description = """Simple swig example from docs""", ext_modules = [palindrome_module], py_modules = ["palindrome"], )
最后在命令行
python setup.py build 会在工作目录生成一个build目录 ,可用的palindrome.py就在..\build\lib\中
相关文章推荐
- 使用swig为python添加c扩展总结
- centos7下使用swig扩展python接口来调用c++ 实现声纹识别
- 使用SWIG对Python进行扩展
- 使用SWIG实现C++扩展Python
- 使用SWIG轻松编写Python扩展
- 使用swig进行C/C++对Python的扩展
- 使用swig实现C++的python扩展功能
- 在VC++6.0中使用swig生成Python扩展的配置
- 使用swig实现C++的python扩展功能
- 使用C语言扩展Python(一)
- 使用SWIG和Python对C/C++进行单元测试(二)
- 8.1.3 在Python扩展中使用MFC
- 使用C语言扩展Python(四)
- 使用C语言扩展Python(一)
- 使用C语言扩展Python(三)
- 使用C语言扩展Python(五)
- 使用C语言扩展Python(三)
- 使用C语言扩展Python(三)
- 使用C语言扩展Python(二)
- 使用C语言扩展Python(一)