使用cython把python编译so

1.需求

为了保证线上代码安全和效率,使用python编写代码,pyc可直接反编译,于是把重要代码编译so文件

2.工作

2.1 安装相关库:

pip install cython
yum install -y gcc python-devel

2.2 创建setup.py

#!/usr/bin/env python
# coding=utf-8
from distutils.core import setup
from Cython.Build import cythonize
setup(
    ext_modules = cythonize("xxxx.py")
)

2.3 运行

[email protected]:/xxx/xxx/xxx# python setup.py build_ext
Compiling xxx.py because it changed.
[1/1] Cythonizing xxx.py
running build_ext
building ‘lib.xxx‘ extension
creating build
creating build/temp.linux-x86_64-2.7
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c xxx.c -o build/temp.linux-x86_64-2.7/xxx.o
creating build/lib.linux-x86_64-2.7
creating build/lib.linux-x86_64-2.7/lib
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/xxx.o -o build/lib.linux-x86_64-2.7/lib/xxx.so

会在当年目录上传build目录,结构如下:

[email protected]:/spider/codes/lib# tree build/
build/
|-- lib.linux-x86_64-2.7
|   `-- lib
|       `-- xxx.so
`-- temp.linux-x86_64-2.7
    `-- xxx.o

3 directories, 2 files

2.4 获取so文件即可

时间: 2024-10-03 06:34:32

使用cython把python编译so的相关文章

使用Cython为Python写扩展1:初识Cython

使用Cython为Python写扩展1:初识Cython Cython使为Python写C扩展就如同写Python代码一样简单.广泛用于数学软件包,SAGE公司,作为执行快速,可扩展的运算.它提供了安全和可维护的方法通过自动生成所需代码来构建原生Python模块. 我们经常会使用Cython将C/C++实现的系统绑定到Python中,这样我们就可以使用Python来处理高级别逻辑,原生模块来处理底层代码. 关于示例 代码 http://git.oschina.net/erhuabushuo/le

Python学习教程:用Cython加速Python代码,快到你想不到

如果你曾经用Python编写过代码,那么等待某些代码块执行的时间可能比您希望的要长.虽然有一些方法可以提高代码的效率,但它很可能仍然比C代码慢.这主要归结为一个事实:Python是一种动态编程语言,它将许多东西移动到C在编译期间负责的运行时. 不过,如果您像我一样喜欢用Python编写代码,并且仍然希望加快代码的速度,那么您可以考虑使用Cython.虽然Cython本身是一种独立的编程语言,但是很容易将其融入到您的工作流程中,例如Jupyter Notebook.在执行时,Cython将您的Py

Cython保护python代码

注:.pyc也有一定的保护性,容易被反编译出源码... 项目发布时,为防止源码泄露,需要对源码进行一定的保护机制,本文使用Cython将.py文件转为.so进行保护.这一方法,虽仍能被反编译,但难度会比较大.另外,Cython是Python的超集. 自行安装Cython 1,创建complie.py文件 from Cython.Build import cythonizefrom Cython.Distutils import build_extfrom setuptools import se

Xcode搭建Python编译环境

* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-family: Arial, Helvetica, sans-serif;margin: 0;color: #333;word-wrap: break-word;}h1, h2, h3, h4, h5, h6 {line-height: 1.1;}img {max-width: 100% !importan

使用Code::Blocks配置Python编译环境

1.先在CodeBlock中新建C或C++工程,因为在Project下才可调试代码. CodeBlock新建工程步骤:File——New——Project——Console applications——C或C++都可——Project所在路径(不可使用中文路径!) 2.工程目录下 main.c 改成 *.py 文件,本文改成test.py. 3.单击菜单栏Tools——Configure tools——Add按钮,出现Edit Tool页面,在此配置Python编译选项. 4.单击Setting

【转】ubuntu下安装eclipse以及配置python编译环境

原文网址:http://blog.csdn.net/wangpengwei2/article/details/17580589 一.安装eclipse 1.从http://www.eclipse.org/downloads/index-developer.php?osType=linux&release=undefined下载linux版本的eclipse 2.使用sudo tar xvfz eclipse-jee-galileo-SR2-linux-gtk.tar.gz  -C /opt,解压

python 编译源文件

背景 近期项目到了部署的阶段.由于项目后台和算法都是用Python "撸的",但是又不希望将源代码直接 "release" 到 “客户”哪里.于是开始思考... 首先,按照惯性思维,能否将编译后的东东放出去呢?(类似java或.net 的部署方式) 再次,是不是能否将“关键部分”的代码保护起来呢? 解决方案 按照第一种思路,我们能将Python编译好的东西release出去呢?经过一些简单的理论查找和时间.发现了可行的解决办法.于是乎,就在今天的博客随笔中将其记录下

用Cython加速Python到“起飞”

https://www.jianshu.com/p/fc5025094912?from=singlemessage 事先声明,标题没有把“Python”错打成“Cython”,因为要讲的就是名为“Cython”的东西. Cython是让Python脚本支持C语言扩展的编译器,Cython能够将Python+C混合编码的.pyx脚本转换为C代码,主要用于优化Python脚本性能或Python调用C函数库.由于Python固有的性能差的问题,用C扩展Python成为提高Python性能常用方法,Cy

Python编译

Python是如何编译的呢? python -m py_compile test.py 会生成test.pyc 文件,这个pyc文件类似java的class文件,也是跨平台的字节码文件,只不过是由python虚拟机来执行,.pyc 文件有几个好处,一是可以简单的隐藏源码,二是提高载入速度,三是跨平台.python -o -m py_compile test.py 会生成test.pyo 文件,.pyo文件是优化生成的pyc文件