您的位置:首页 > 编程语言 > Python开发

使用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:

# 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\中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 扩展