python打包成 .so的实现步骤

 更新时间:2023年12月24日 11:00:38   作者:哦豁灬  
当需要将产品发布到外部环境的时候,源码的保护尤为重要,因此需要将python文件打成so文件的目的就是为了保护源码,本文主要介绍了python打包成.so的实现步骤,感兴趣的可以了解一下

为什么要将python打包成so文件

Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效。python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要.因此需要将python文件打成so文件的目的就是为了保护源码。

1)生成 .so库文件,使用脚本 py2sp.py,编译目标 python 文件成 .so

py2so

import Cython.build
import distutils.core

def py2so(file):
    cpy Cython.Build.cythonize(file) # 返回 distuls.extension.Extension 对象列表
    
    distutils.core.setup(
    	name = 'python_to_so',	# 包名称
        version = "1.0",	# 包版本号
        ext_modules = cpy,	# 扩展模块
        author = 'ohuo',	# 作者
        author_email = 'aha',	# 作者邮箱
    )

if __name__ == '__main__':
    file = 'hello.py'
    py2so(file)

2)执行编译脚本

python3 py2so.py build_ext --inplace

3)使用 .so中打包的方法,import_my_so.py

import hello
hello.main()

输出:

aha, hello

·hello.py·

def main():
    print("aha, hello")

到此这篇关于python打包成 .so的实现步骤的文章就介绍到这了,更多相关python打包成 .so内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 浅谈pyqt5中信号与槽的认识

    浅谈pyqt5中信号与槽的认识

    这篇文章主要介绍了浅谈pyqt5中信号与槽的认识,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • python中opencv与PIL图片读取保存及相互转化方式

    python中opencv与PIL图片读取保存及相互转化方式

    这篇文章主要介绍了python中opencv与PIL图片读取保存及相互转化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 使用pandas读取表格数据并进行单行数据拼接的详细教程

    使用pandas读取表格数据并进行单行数据拼接的详细教程

    这篇文章主要介绍了使用pandas读取表格数据并进行单行数据拼接的详细教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python实现处理Excel数据并生成只读模式

    Python实现处理Excel数据并生成只读模式

    这篇文章主要为大家详细介绍了如何使用 Python 处理 Excel 数据,并生成只读模式的 Excel 文档,文中的示例代码简洁易懂,有需要的小伙伴可以参考下
    2023-11-11
  • 基于python调用jenkins-cli实现快速发布

    基于python调用jenkins-cli实现快速发布

    这篇文章主要介绍了基于python调用jenkins-cli实现快速发布,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 详解关于Django中ORM数据库迁移的配置

    详解关于Django中ORM数据库迁移的配置

    这篇文章主要介绍了详解关于Django中ORM数据库迁移的配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 详解如何在Pandas中删除常量列

    详解如何在Pandas中删除常量列

    常数列不提供可变性,这意味着它们无助于区分不同的数据点,在许多机器学习模型中,这些列会引入冗余或不相关的数据,从而对性能产生负面影响,因此,通常必须删除常量列,所以本文我们将探索如何使用Python识别和删除Pandas DataFrame中的常量列,需要的朋友可以参考下
    2025-03-03
  • python创建生成器以及访问的方法详解

    python创建生成器以及访问的方法详解

    这篇文章主要介绍了python创建生成器以及访问的方法详解,与列表一次性地将数据全都加载到内存不同的是,生成器使用推断加载数据,每次只推断出一个对象,在数据量比较大时,可以节省内存,需要的朋友可以参考下
    2023-11-11
  • Pytorch:Conv2d卷积前后尺寸详解

    Pytorch:Conv2d卷积前后尺寸详解

    这篇文章主要介绍了Pytorch:Conv2d卷积前后尺寸,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python ftplib上传文件名乱码的解决办法

    python ftplib上传文件名乱码的解决办法

    本文主要介绍了python ftplib上传文件名乱码的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04

最新评论