首页 > 编程知识 正文

python加载so文件,python调用安卓so文件

时间:2023-05-05 07:58:39 阅读:278910 作者:3937

利用Python将py文件编译成so文件 1. 缘由2. 办法2.1. 软件环境2.2. 源文件2.3. setup.py2.4. 执行编译2.5. 使用2.6. inplace

1. 缘由

Python的解释特性是将py编译为独有的二进制编码pyc文件
然后对pyc中的指令进行解释执行
但是pyc的反编译却非常简单,可直接反编译为源码
正所谓“防人之心不可无”
当需要将产品发布到外部环境的时候,源码的保护尤为重要

2. 办法

可以先将py转换为c,然后编译c为so文件

2.1. 软件环境

安装 cython

$ pip3 install cython 2.2. 源文件

在py_to_so文件夹下新建test.py文件待编译,内容如下:

class TEST: def hello(): print('Hello CSDN!') 2.3. setup.py

在py_to_so文件夹下新建setup.py文件,内容如下:

from distutils.core import setupfrom Cython.Build import cythonizesetup(ext_modules = cythonize(["test.py"])) 2.4. 执行编译

在py_to_so文件夹下执行编译

$ python3 setup.py build_ext


运行后会生成build文件夹,如下:

lib.linux-x86_64-3.8文件夹下的test.cpython-38-x86_64-linux-gnu.so就是想要的.so文件

2.5. 使用

现在so文件就可以像普通py文件一样导入使用

$ cd build/lib.linux-x86_64-3.8$ python3$ from test import TEST$ TEST.hello()# Hello CSDN!

2.6. inplace $ python3 setup.py build_ext --inplace

–inplace:ignore build-lib and put compiled extensions into the source directory alongside your pure Python modules
忽略build-lib,将编译后的扩展放到源目录中,与Python模块放在一起

文中所提文件已在 CSDN代码 codechina py_to_so 中

谢谢

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。