热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python如何封装成so_python打包成so文件

作为一个python开发者,是否也想像CC#程序员一样把代码编译成dll,JAVA程序员编译成jar包呢?即保护的代码的隐私,

作为一个python开发者,是否也想像C++ C#程序员一样把代码编译成dll,JAVA程序员编译成jar包呢?即保护的代码的隐私,又能把逼装住?/doge 答案是肯定的。

1.安装工具

python 安装:cython

linux 安装:python-devel,gcc

不再赘述

2.写一个被打包的测试文件

#hello.py

def hello(name):

print 'hello! %s' % name1

2

3.准备开玩

#setup.py

# coding:utf-8

from distutils.core import setup

from Cython.Build import cythonize

if __name__ == '__main__':

file_name = 'hello.py' # 文件名

build_dir = '' # 文件目录

build_tmp_dir = 'temp' # 编译的临时文件目录

setup(ext_modules=cythonize(file_name), script_args=["build_ext", "-b", build_dir, "-t", build_tmp_dir])1

2

3

4

5

6

7

8

9

这时运行setup.py,就可以看到生成的hello.so文件了

另我更加酸爽的是,这个so文件可以像py文件直接import,你敢信?

#test.py

from hello import hello

if __name__ == '__main__':

hello()1

2

3

注意

1.此so类似于将py转为so,并没有打包他的依赖项和环境、框架;

2.感谢Arvin大神写的py2so,https://github.com/ArvinMei/py2so.git,可遍历文件夹打包并删除生成的临时文件,非常的给劲



推荐阅读
  • Java 中 Writer flush()方法,示例 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
author-avatar
荡平三界_713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有