自定义python扩展类型
目标:自定义一个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://stackoverflow.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
自定义python扩展类型的更多相关文章
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
- Python 扩展 Op
Python 扩展 Op 注意 :本文涉及的 Python Kernel 仅在 gcc 4.8.5 编译环境下充分测试,进一步的完善计划见 Issue 3951. 背景介绍 OneFlow 将各种对于 ...
- vs写python扩展资料收集
总结: 1.创建dll工程: 2.增加包含头文件路径 :将python路径下的include加入到包含头文件路径:在工程属性页 C/C++/附加包含目新增<Python>\include目 ...
- MIME(多用途互联网邮件扩展类型)
MIME对照表 百度百科 MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.(百度百科).是设定某种扩展名的文件用一种应用程序来打开的方式 ...
- python扩展实现方法--python与c混和编程 转自:http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html
前言 需要扩展Python语言的理由: 创建Python扩展的步骤 1. 创建应用程序代码 2. 利用样板来包装代码 a. 包含python的头文件 b. 为每个模块的每一个函数增加一个型如PyObj ...
- python扩展实现方法--python与c混和编程
前言 需要扩展Python语言的理由: 创建Python扩展的步骤 1. 创建应用程序代码 2. 利用样板来包装代码 a. 包含python的头文件 b. 为每个模块的每一个函数增加一个型如PyObj ...
- 自定义和扩展 SharePoint 2010 Server 功能区
了解构成 SharePoint 2010 服务器功能区的组件以及如何通过演练两个功能区自定义项方案来自定义功能区. 适用范围: Microsoft SharePoint Foundation 2010 ...
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
在 Build 开发者大会上推出VM 扩展程序的其中一个称为"自定义脚本扩展程序",它支持 PowerShell.如果这是您第一次访问这些博客,可能需要查看以前的博客,请单击 ...
- iOS回顾笔记(08) -- 自定义Cell的类型和创建步骤总结
iOS回顾笔记(08) -- 自定义Cell的类型和创建步骤总结 项目中我们常见的自定义cell主要分为两种 等高cell:如应用列表.功能列表 非等高cell:如微博列表.QQ聊天页面 下面对这 ...
随机推荐
- mybatis_generator合并xml mapper文件
一.问题 用的mybatis.generator 1.3.6版本,版本没啥大关系. 目前的xml输出有两个主要的问题: 1.xml追加而不是覆盖 这样就导致一个xml mapper文件每个node都重 ...
- C#/.NET 使用官方驱动操作MongoDB(一):插入、查询
概述 想要在C#中使用MongoDB,首先得要有个MongoDB支持的C#版的驱动. C#版的驱动有很多,这里我们先用官方提供的 MongoDB.Driver(使用 Nuget 安装),当前版本为2. ...
- NOIp 2018 D2T1 旅行//未完成
这个题没有认真读的话就会写下以下的DD代码 #include<bits/stdc++.h> #define N 5010 using namespace std; int n,m; int ...
- 谈谈Java中的volatile(转载)
内存可见性 留意复合类操作 解决num++操作的原子性问题 禁止指令重排序 总结 内存可见性 volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色.同synch ...
- Linq中datetime的处理以及asp.net下拉列表控件的selectitem,text等的设置显示处理
dhl:报错:LINQ to Entities 不支持指定的类型成员“Date” Linq如: var v = from l in _dal.Share where l.PingcoId == pin ...
- C# 用 WebClient 的 Post 方法向 WebServer 传输数据
帮朋友做一个通过Web简单传输数据的例子,百度了一下抄了段代码,完成,效果如下: 其中textBox1里面是客户端需要传输过去的数据,textBox2里面是接收到的返回数据. 代码如下: using ...
- Mysql 监控脚本
cat mysql_status_output.py #coding=utf-8import jaydebeapiimport sysimport pymysqlimport osfrom prome ...
- cocos2d-x学习笔记(贪吃蛇代码)
方向键控制蛇运动:上↑:右→:下↓:左←. 百度网盘链接:https://pan.baidu.com/s/1c1FSXaw 提取密码:u1kr
- 8.7 C++二进制文件读写操作
参考:http://www.weixueyuan.net/view/6413.html 总结: 二进制文件的读写稍微麻烦一些,对二进制文件的读写同样需要打开文件和关闭文件,打开和关闭方式与文本文件相同 ...
- FS:[0] 链条
0x01 用户态 在x86系统中,当线程在用户态执行时,段寄存器fs总是指向当前线程的TEB. 在Ntdll中有一个未公开的函数NtCurrentTeb() ,用来取得当前线程的TEB地址.FS:[ ...