自定义python扩展类型

时间:2021-11-12 23:51:56

目标:自定义一个C\C++矩阵类,有几个用于演示的矩阵运算函数或者操作,将其通过

PyTypeOject newType的方式注册到python中成为一种新的类型,并且要可继承。

预备知识

建议先运行python源码剖析第6章smallpython的代码,有个直观认识,再从书的第一章看起。

知乎相关type和oject的回答链接放这。

熟悉python和C\C++的混合编程。

C:

https://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html

C++:

http://bbs.chinaunix.net/thread-1593255-1-1.html

妈卖批,会提示没有Python.h,然后又提示未定义的引用,解决方法:

先把anaconda中搜到的python2.7的头文件夹复制到/usr/include中,再使用下面的命令:

gcc -I/usr/include/python2.7 test.c -lpython2.7 -o demo

解决方法来自:https://*.com/questions/12955086/compile-file-c-with-embedded-python-c-functions

每一个包装函数主要做三件事:
1.把输入的Python对象转换为C/C++对象;
2.调用C/C++函数;
3.转换C/C++函数处理的输出结果为Python对象,并返回;

http://www.xefan.com/categories/Python%E6%A0%8F%E7%9B%AE/

https://docs.python.org/2.7/extending/index.html

开头的目标还是暂时放一放,还是看THPP、ATen、csrc有趣。

windows下给python添加C、C++扩展编译的时候有几个坑。下面是解决方法:

Unable to find vcvarsall.bat         https://www.zhihu.com/question/26857761

我用的是 先命令行运行  SET VS90COMNTOOLS=%VS110COMNTOOLS%  ,

然后 python setup.py build的方法。

另外一个,安装了Anaconda后,代码要包括Python.h时也会提示找不到头文件。

下面这个博客解决了:

https://www.zhihu.com/question/23003213/answer/56121859

cl my_python.c -IC:\Python27\include C:\Python27\libs\python27.lib

路径替换成Anaconda中python所在路径。而且命令行要用 VS 的兼容工具命令提示

编辑时间:

1128 0119

1201 0050

1201 0150

2017年12月8日01:30:05