Python源代码保护(Python文件编译生成pyd/so库文件)
一、首先为什么要使用pyd文件?
我们知道Python是一门解释型语言,当我们想让其他人运行我们的代码时,如果直接将.py源代码发送给他人,那么源代码将没有任何安全性可言,也就是任何一个人都可以打开源代码一看究竟,任何人都可以随意修改源代码。因此当我们想保护我们的源代码(算法保护)或者防止用户篡改源代码时,可以将Python源代码编译生成.pyd库文件或者.so库文件(Windows平台生成pyd文件,Linux生成so文件)。
事实上,Python和Java的解释方式是相同的,只是我们表面上看Python是直接解释源代码,而实际上python解释器只会加载字节码。细心的小伙伴肯定发现了这一点,当我们import某个模块时,总是会在模块所在的目录创建一个__pycache__目录,里面存放着被加载模块的字节码文件。
Python有以下几种类型的文件:
- py:Python控制台程序的源代码文件
- pyw:Python带用户界面的源代码文件
- pyx:Python包源文件
- pyc:Python字节码文件(可通过逆向编译来得到源码)
- pyo:Python优化后的字节码文件(可通过逆向编译来得到源码)
- pyd:在Windows平台上Python的库文件(Python版DLL)
- so:在Linux平台上是so文件
二、生成pyd/so库文件
代码(文件名py2c.py):
import Cython.Build
import distutils.coredef py2c(file):cpy = Cython.Build.cythonize(file) # 返回distutils.extension.Extension对象列表distutils.core.setup(name = 'pyd的编译', # 包名称version = "1.0", # 包版本号ext_modules= cpy, # 扩展模块author = "kdongyi",#作者author_email='kdongyi@163.com'#作者邮箱)if __name__ == '__main__':file = "train_gpu.py"py2c(file)
如何执行:
在命令行执行如下代码:
python py2c.py build_ext --inplace
在Windows平台执行结果:
生成如下文件:
在Linux平台执行结果:
生成如下文件:
三、使用pyd/so库文件
在命令行输入:
python
然后导入我们生成的库文件模块:
import train_gpu
train_gpu.main()
注:train_gpu.main() 其中main()为train_gpu.py中的一个函数。
Python源代码保护(Python文件编译生成pyd/so库文件)相关推荐
- python中 .py .pyc .pyw .pyo .pyd各后缀文件区别
转载自:https://www.cnblogs.com/deadwood-2016/p/8143351.html .py 文件 以 .py 作扩展名的文件是 Python 源代码文件,由 python ...
- python创建虚拟环境打包_用虚拟环境保存库文件--Python打包-阿里云开发者社区
用虚拟环境保存库文件 如果你同时负责多个 Python 项目,或者想要轻松打包某个项目及其关联的库文件,再 或者你担心已安装的库之间可能有冲突,那么你可以安装一个 Python 虚拟环境来分而 治之. ...
- 用Python读取轻轻松松背单词的GDS词库文件
<轻轻松松背单词>是一个广泛使用的背单词软件,有丰富的词库资源.读取轻轻松松背单词GDS词库文件,可以在此基础上开发背单词类软件. #--------------------------- ...
- cython,加速python,保护代码(3):扩展文件 .pxd
http://docs.cython.org/src/tutorial/pure.html .pxd文件相当于c语言中的头文件.h. In addition to the .pyx source fi ...
- python导出项目所依赖的所有的库文件以及安装
python项目包的导入和导出 1.导出 pip freeze > filename.txt # filename.txt 可随意命名 # 同时filename.txt 文件中可自定义编辑,也是 ...
- 如何在keil中将文件封装为lib库文件
1.首先重新打开一份工程文件 2.将不需要封装的文件全部禁止编译(右键--Option For File 'xxxxx.c')或者从工程中移除 V 3.点击"Options For Targ ...
- win10 下pycharm+anaconda 编译生成pyd文件
由于生产部署的问题,需要把用python写的深度学习代码编译为可被调用的文件.上网搜索了下,暂时了解到win10下pyd文件比较流行.下面是直接引用某位博主的结论,个人感觉总结的很好.其中Cython ...
- 转:Python源代码编译成 pyc pyo
[转] Python源代码编译成 pyc pyo 2011-02-28 17:23 [转] Python源代码编译成 pyc pyo 什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后, ...
- 1.Python概述-认识python
Python 的读音:英[ˈpaɪθən] 美[ˈpaɪθɑːn] Python是一种面向对象.解释性的高级程序语言. 一.计算机语言的发展 这里主要介绍了计算机语言发展的三个阶段,帮助初学 ...
最新文章
- LINQ那些事儿(2)- 简单对象的CRUD操作和Association的级联操作
- Python中的线程threading.Thread()使用详解
- 汇总运行在Hadoop YARN上的开源系统
- 使用 JavaScript 实现灵活的固定导航功能
- 如何给FormPanel表单中的元素赋值以及获取表单元素值
- php提示是否运行,php运行错误提示
- 数据线给电脑联网是什么原理_物联网孵化的产物——条码扫描器
- 单片机音频信号分析仪
- 向量叉乘的几何意义及其模的计算
- pkg打包node项目文件
- 趋势移动或者移动应用2012
- 硅谷之行 (15) Fremont观豪宅
- 【信息安全】屁股决定脑袋的COSO内控框架,一篇对COSO的趣评 [转贴]
- linux系统下刻录u盘制作启动盘
- #ASM 翻译系列第二十五弹:ASM 高级知识 When will my rebalance complete
- 电信天翼云搭建Halo博客
- 简单的Django系统模板
- Eclipse4.2安装FlashBuilder插件
- Java---点名---最简
- 04.ARM-mini2440-内存管理单元(MMU)