CentOS 7 下通过 Cython 编写 python 扩展
1. 安装 python 和 python-devel(没有后者,install 的时候会报错 "Scanners.c:21:20: fatal error: Python.h: No such file or directory")
2. 从 https://pypi.python.org/pypi/Cython/ 下载 Cython-0.29.26.tar.gz
3. 安装 Cython
tar -xvzf Cython-0.29.26.tar.gz
cd Cython-0.29.26.tar.gz
python setup.py install
4. 编写 pyx 脚本
mkdir hello_pack && cd hello_pack
创建 hello.pyx 脚本,定义所需的函数
#coding=utf-8
def print_hello(name):
print "Hello %s!" % name
5. 编写 setup.py 编译脚本
from distutils.core import setup
from Cython.Build import cythonize
setup(
name='Hello pyx',
ext_modules=cythonize('hello.pyx')
)
6. 编译组件
python setup.py build
7. 执行完之后,会生成当前目录下 ./build/lib.linux-x86_64-2.7/hello.so
8. 编写调用脚本 hello.py,放在 hello.so 所在目录
#!/usr/bin/python
# coding=utf-8
import hello
hello.print_hello("cython")
9. 执行 hello.py,输出
Hello cython!
PS: 使用 Cython 的目的一是提升执行效率,另外一个就是实现对 *.py 代码的保护,毕竟反编译 .so 总要麻烦一些吧
参考文档:
fatal error: Python.h: No such file or directory解决办法
centos 7 安装 python-dev包提示No package python-dev available
CentOS 7 下通过 Cython 编写 python 扩展的更多相关文章
- 我在 Ubuntu 下使用 Sublime 编写 python 代码时遇到并解决的问题
Ubuntu 下 Sublime 无法输入中文 解决方法如下: sudo apt-get update && sudo apt-get upgrade 克隆项目到本地 : git cl ...
- 编写python扩展
代码: #include <Python.h> static PyObject * spam_system(PyObject *self, PyObject *args) { const ...
- Centos环境下给PHP7.0安装yaf扩展
首先要知道PHP的安装目录在哪里,以我当前的路径为例,在/usr/local/php目录下. 下一步需要下载扩展包,进入http://pecl.php.net/package/yaf寻找符合版本要求的 ...
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
c#实例化继承类,必须对被继承类的程序集做引用 0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...
- Python和C++的混合编程(使用Boost编写Python的扩展包)
想要享受更轻松愉悦的编程,脚本语言是首选.想要更敏捷高效,c++则高山仰止.所以我一直试图在各种通用或者专用的脚本语言中将c++的优势融入其中.原来贡献过一篇<c++和js的混合编程>也是 ...
- VSCode的Python扩展下程序运行的几种方式与环境变量管理
在VSCode中编写Python程序时,由于有些地方要使用环境变量,但是发现设置的环境变量有时不起作用,花了点时间研究了一下,过程不表,直接说结论. 首先,环境变量的设置,Python扩展中有三种方式 ...
- 编写Tesseract的Python扩展
Tesseract是一个开源的OCR(光学字符识别)引擎,用于识别并输出图片中的文字.虽然和商业软件比起来识别精度不算很高,但是如果你要寻找免费开源的OCR引擎,可能Tesseract就是唯一的选择了 ...
- window下python 扩展库安装 使用第三方镜像源
0.前言 由于python的官方镜像位于国外,若使用pip或者easy_install安装第三方插件时或许会被限制,甚至连easy_install或pip也无法安装,例如在windows环境下 ...
- CentOS 6 下安装Python 3
可以下载各个版本的python:https://www.python.org/ftp/python/ 配置安装 下载最新的安装包(截止2013/11/05),还是3.3.2版本. #wget http ...
- 在Linux下编写php扩展
以下内容是本人学习过程中的笔记或者心得,如果有什么建议或者意见请在评论中提醒我,谢谢,这篇文章我会定期更新,由浅到深的分享我学PHP扩展历程 或者在学习中有什么问题欢迎交流 1.去PHP官网下载一个源 ...
随机推荐
- 机器学习:详解多任务学习(Multi-task learning)
详解多任务学习 在迁移学习中,步骤是串行的,从任务\(A\)里学习只是然后迁移到任务\(B\).在多任务学习中,是同时开始学习的,试图让单个神经网络同时做几件事情,然后希望这里每个任务都能帮到其他所有 ...
- Windows下UI自动化工具Inspect
windows系统下的UI自动化工具Inspect是包含在WindowsSDK包里的,所以需要先下载SDK包,然后在SDK包路径下找到Inspect工具并打开使用就可以了. 官网下载链接:https: ...
- elasticsearch初步使用学习
通过使用elasticsearch,我们可以加快搜索时间(直接使用SQL的模糊查询搜索耗时会比较久,而且elasticsearch的响应耗时与数据量关系不大) es主要用于存储,计算,搜索数据 依次部 ...
- 【Java】在线文件预览服务 KkFileView
原来有第三方在线预览服务接口: 需要收费使用: https://view.xdocin.com/ 但是经费不足,突然撤掉服务接口,只能把KkFileView架出来使用了 KkFileView官网地址: ...
- 【转载】 Docker-关于docker cpu的限制后,实际效果的研究
原文地址: https://zhuanlan.zhihu.com/p/46275332 ================================================== 思考:我们 ...
- 亲测可用的 Linux(Ubuntu18.04下)可运行的俄罗斯方块游戏的仿真环境—————————可用于强化学习算法的游戏模拟器环境
俄罗斯方块模拟器(tetris 游戏),Python库地址: https://gitee.com/devilmaycry812839668/gym-tetris 在Python3.7环境下亲测可用: ...
- cloudpickle —— Python分布式序列化的专用模块
给出cloudpickle的GitHub地址: https://github.com/cloudpipe/cloudpickle =================================== ...
- 一些八股:1.fetch 的理解。2.let、const、var
一. 说说你对 Fetch 的理解,它有哪些优点和不足? Fetch API 是现代 JavaScript 中用于进行网络请求的接口,旨在替代传统的 XMLHttpRequest.它提供了一种更简单. ...
- js map方法处理返回数据,获取指定数据简写方法
map方法处理返回数据,获取指定数据简写方法 前言 后端返回数据为数组列表时,通常比较全面,包含了很多不需要的数据,可以通过 map 方法处理返回数据,筛选出想要的数据 例如 // 返回数据 res ...
- C# 使用特性的方式封装报文
在编写上位机软件时,需要经常处理命令拼接与其他设备进行通信,通常对不同的命令封装成不同的方法,扩展稍许麻烦. 本次拟以特性方式实现,以兼顾维护性与扩展性. 思想: 一种命令对应一个类,其类中的各个属性 ...