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 总要麻烦一些吧

参考文档:

Cython的简单使用

fatal error: Python.h: No such file or directory解决办法

centos 7 安装 python-dev包提示No package python-dev available

CentOS 7 下通过 Cython 编写 python 扩展的更多相关文章

  1. 我在 Ubuntu 下使用 Sublime 编写 python 代码时遇到并解决的问题

    Ubuntu 下 Sublime 无法输入中文 解决方法如下: sudo apt-get update && sudo apt-get upgrade 克隆项目到本地 : git cl ...

  2. 编写python扩展

    代码: #include <Python.h> static PyObject * spam_system(PyObject *self, PyObject *args) { const ...

  3. Centos环境下给PHP7.0安装yaf扩展

    首先要知道PHP的安装目录在哪里,以我当前的路径为例,在/usr/local/php目录下. 下一步需要下载扩展包,进入http://pecl.php.net/package/yaf寻找符合版本要求的 ...

  4. 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 ...

  5. Python和C++的混合编程(使用Boost编写Python的扩展包)

    想要享受更轻松愉悦的编程,脚本语言是首选.想要更敏捷高效,c++则高山仰止.所以我一直试图在各种通用或者专用的脚本语言中将c++的优势融入其中.原来贡献过一篇<c++和js的混合编程>也是 ...

  6. VSCode的Python扩展下程序运行的几种方式与环境变量管理

    在VSCode中编写Python程序时,由于有些地方要使用环境变量,但是发现设置的环境变量有时不起作用,花了点时间研究了一下,过程不表,直接说结论. 首先,环境变量的设置,Python扩展中有三种方式 ...

  7. 编写Tesseract的Python扩展

    Tesseract是一个开源的OCR(光学字符识别)引擎,用于识别并输出图片中的文字.虽然和商业软件比起来识别精度不算很高,但是如果你要寻找免费开源的OCR引擎,可能Tesseract就是唯一的选择了 ...

  8. window下python 扩展库安装 使用第三方镜像源

    0.前言     由于python的官方镜像位于国外,若使用pip或者easy_install安装第三方插件时或许会被限制,甚至连easy_install或pip也无法安装,例如在windows环境下 ...

  9. CentOS 6 下安装Python 3

    可以下载各个版本的python:https://www.python.org/ftp/python/ 配置安装 下载最新的安装包(截止2013/11/05),还是3.3.2版本. #wget http ...

  10. 在Linux下编写php扩展

    以下内容是本人学习过程中的笔记或者心得,如果有什么建议或者意见请在评论中提醒我,谢谢,这篇文章我会定期更新,由浅到深的分享我学PHP扩展历程 或者在学习中有什么问题欢迎交流 1.去PHP官网下载一个源 ...

随机推荐

  1. 基于 SASL/SCRAM 让 Kafka 实现动态授权认证

    一.说明 在大数据处理和分析中 Apache Kafka 已经成为了一个核心组件.然而在生产环境中部署 Kafka 时,安全性是一个必须要考虑的重要因素.SASL(简单认证与安全层)和 SCRAM(基 ...

  2. Linux 安装LibreOffice及常见问题解决

    Linux 安装LibreOffice及常见问题解决 一 .在官网下载对应的压缩包 官网地址:https://www.libreoffice.org/download/download/ 选择Linu ...

  3. python 抽卡

    模拟抽奖 import random def main(): print('weilcome to box game') print(' 1.once\n','2.sixty times\n','3. ...

  4. Python获取指定网段正在使用的IP

    Python获取指定网段正在使用的IP #!/usr/bin/env python # -*- coding: utf-8 -*- ''''' 使用方法样例 python test20.py 192. ...

  5. Net8将Serilog日志推送ES,附视频

    这是一个Serilog的实践Demo,包括了区别记录存放,AOP 日志记录,EF 执行记录,并且将日志推送到Elastic Search. 说在前面的话 自从AI出来之后,学习的曲线瞬间变缓了,学习的 ...

  6. 【Java】Excel 读写图片工具类

    一.需求背景: 做一个大屏管理系统,基础信息包括管理的应用名称,大屏的截图,通过一个excel批量导入 excel的单元格里要插入图片,对应一个大屏应用的信息 导入需要读取到大屏截图,至于存哪还没说. ...

  7. 【DataBase】MySQL 03 基本命令 & 语法规范

    参考至视频:P12 - P15 https://www.bilibili.com/video/BV1xW411u7ax?p=82 SHOW 和相关的基本命令 查看所有的数据库 SHOW DATABAS ...

  8. Jax框架的显存分析已经不支持gperftools,而是支持go语言下的新版本pprof

    官方: https://jax.readthedocs.io/en/latest/device_memory_profiling.html

  9. model.train方法的dataset_sink_mode参数设置为False时以step作为单位打印数据——(只在mode=context.GRAPH_MODE下成立,在mode=context.PYNATIVE_MODE模式下不成立)

    如题: 官方中的内容支持: https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/advanced_use/summary_record.html ...

  10. 【转载】 【报错】ImportError: cannot import name 'downsample' —— lasagne模块 调用 theano 报错

    原网址: https://blog.csdn.net/kz_java/article/details/125030733 ======================================= ...