在Win7环境下,利用SWIG实现Python调用C的方法
2015-04-27 15:18
866 查看
1.系统环境
(1)操作系统为Win7 x64;
(2)VS版本为VS2013_RTM_ULT_CHS,并安装了更新Visual Studio 2013 Update 4 RTM;
(3)Python版本为python-3.4.2 x64;
(4)SWIG版本为swigwin-3.0.5;
(5)编辑软件pycharm-professional-4.0.1。
2.安装SWIG
(1)下载并解压:http://www.swig.org/download.html
(2)将swig.exe所在目录添加到系统变量path中。
【我的配置如下】
D:\Software Packages\Data Analysis\Python\swigwin-3.0.5\;
(3)添加两个系统变量:
PYTHON_INCLUDE : Set this to the directory that contains python.h
PYTHON_LIB : Set this to the python library including path for linking
【我的配置如下】
PYTHON_INCLUDE : C:\Program Files (x86)\Python34\include
PYTHON_LIB: C:\Program Files (x86)\Python34\libs\python34.lib
(4)在命令提示符中运行
3.用PyCharm新建工程,在其中编写C语言文件palindrome.c
4.在工程中编写接口文件palindrome.i
5.在工程中编写配置文件setup.py
使用python.distutils工具生成扩展模块,并命名为_palindrome(该文件需加下划线,否则会与之后生产的palindrome.py冲突)。
6.编译、连接
(1)以管理员身份运行CMD命令处理程序,并将目录切换到工程所在目录。运行
可得到一个build文件夹、palindrome.py、palindrome_wrap.c、_palindrome.pyd。
(2)对于error: Unable to find vcvarsall.bat,采用的办法简单粗暴,在“..python安装路径…\Lib\distutils目录下有个msvc9compiler.py找到toolskey = “VS%0.f0COMNTOOLS” % version直接改为 toolskey = “VS你的版本COMNTOOLS”。
因我的VS为2013版,所以【我的配置如下】
路径:C:\Program Files (x86)\Python34\Lib\distutils\msvc9compiler.py
修改:toolskey = “VS120COMNTOOLS”
7.在工程中编写测试文件test.py
运行输出0和1,表明上述该方法成功。
8.参考资料
(1)《Python基础教程(第2版)》
第17.3.1 SWIG章节,第18.3 编译扩展章节
(2)3 Getting started on Windows
http://www.swig.org/Doc1.3/Windows.html
(3)Win7 下Swig安装和配置
/article/9771452.html
(4)swig+python的用法
/article/8185655.html
(5)Windows下python使用SWIG调用C++ dll
http://blog.csdn.net/tobacco5648/article/details/24303299?utm_source=tuicool
(6)[置顶] 彻底解决 error: Unable to find vcvarsall.bat
/article/9192641.html
(1)操作系统为Win7 x64;
(2)VS版本为VS2013_RTM_ULT_CHS,并安装了更新Visual Studio 2013 Update 4 RTM;
(3)Python版本为python-3.4.2 x64;
(4)SWIG版本为swigwin-3.0.5;
(5)编辑软件pycharm-professional-4.0.1。
2.安装SWIG
(1)下载并解压:http://www.swig.org/download.html
(2)将swig.exe所在目录添加到系统变量path中。
【我的配置如下】
D:\Software Packages\Data Analysis\Python\swigwin-3.0.5\;
(3)添加两个系统变量:
PYTHON_INCLUDE : Set this to the directory that contains python.h
PYTHON_LIB : Set this to the python library including path for linking
【我的配置如下】
PYTHON_INCLUDE : C:\Program Files (x86)\Python34\include
PYTHON_LIB: C:\Program Files (x86)\Python34\libs\python34.lib
(4)在命令提示符中运行
swig --help,出现Target Language Options等即表明安装成功。
3.用PyCharm新建工程,在其中编写C语言文件palindrome.c
#include <string.h> //检测是否是回文 int is_palindrome(char *text){ int i, n=strlen(text); for(i=0; i<=n/2; ++i){ if(text[i] != text[n-i-1]) return 0; } return 1; }
4.在工程中编写接口文件palindrome.i
%module palindrome %{ #include <string.h> %} extern int is_palindrome(char *text);
5.在工程中编写配置文件setup.py
使用python.distutils工具生成扩展模块,并命名为_palindrome(该文件需加下划线,否则会与之后生产的palindrome.py冲突)。
from distutils.core import setup, Extension setup(name='Palindrome', version='1.0.0', description='Simple SWIG example for palindrome test', ext_modules=[Extension('_palindrome', sources=['palindrome.c', 'palindrome.i'])] )
6.编译、连接
(1)以管理员身份运行CMD命令处理程序,并将目录切换到工程所在目录。运行
python setup.py build_ext --inplace
可得到一个build文件夹、palindrome.py、palindrome_wrap.c、_palindrome.pyd。
(2)对于error: Unable to find vcvarsall.bat,采用的办法简单粗暴,在“..python安装路径…\Lib\distutils目录下有个msvc9compiler.py找到toolskey = “VS%0.f0COMNTOOLS” % version直接改为 toolskey = “VS你的版本COMNTOOLS”。
因我的VS为2013版,所以【我的配置如下】
路径:C:\Program Files (x86)\Python34\Lib\distutils\msvc9compiler.py
修改:toolskey = “VS120COMNTOOLS”
7.在工程中编写测试文件test.py
import palindrome print(palindrome.is_palindrome('abc')) print(palindrome.is_palindrome('abcba'))
运行输出0和1,表明上述该方法成功。
8.参考资料
(1)《Python基础教程(第2版)》
第17.3.1 SWIG章节,第18.3 编译扩展章节
(2)3 Getting started on Windows
http://www.swig.org/Doc1.3/Windows.html
(3)Win7 下Swig安装和配置
/article/9771452.html
(4)swig+python的用法
/article/8185655.html
(5)Windows下python使用SWIG调用C++ dll
http://blog.csdn.net/tobacco5648/article/details/24303299?utm_source=tuicool
(6)[置顶] 彻底解决 error: Unable to find vcvarsall.bat
/article/9192641.html
相关文章推荐
- 在Win7环境下,利用SWIG实现Python调用C的方法
- 利用swig实现python调用C/C++的方法
- 利用swig实现python调用C/C++的方法
- 利用swig实现python调用C/C++的方法
- python利用字典保存配置实现动态调用模块类方法
- windows下用swig实现python调用C\C++的方法
- 【廖雪峰 python教程 课后题 切片】利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
- 【廖雪峰 python教程 课后题 切片】利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
- Window下,利用Anaconda2创建jupyter-notebook的python3环境方法
- python利用jpype调用java对象方法
- linux下使用SWIG实现Python调用C++ sdk读取相机图片
- python2.7代码在win7_64环境下输出中文乱码解决方法
- Linux环境下python调用C静态库的方法与例子
- python中的__new__方法与__init__方法区别与调用;通过使用__new__实现单例模式
- python 调用海康linux下psdatacall_demo,实现获视频取码流并返回到python,以及上传信息到人脸库的方法
- 利用Python代码实现数据可视化的5种方法详解
- Py:python实现调用内部命令的三种方法——Jason niu
- Java程序中实现调用Python脚本的方法详解
- Java实现调用jython执行python文件的方法
- Python 中如何利用import实现脚本之间的调用