python隐藏源码,生成pyd文件并调用的完整过程

​pyd 特点及生成方式​

我们知道​ ​windows 系统有许多 DLL 后缀的文件,即动态链接库,在运行时链接到调用程序​​。在运行时链接到 DLL 之类的库的主要优点是,它可以促进代码重用,模块化体系结构和更快的程序启动。结果,DLL 在 Windows 操作系统周围提供了许多功能。​​pyd 这个 d 就是取自于 DLL,只能运行在 windows 系统上​​。假设我们有一个 demo.py,想要打成 demo.pyd;

首先需要在 ​demo.py 同目录下新建个 setup.py 文件,具体代码如下

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("AutoUpdate.py")) # 这里填写的就是你的参数,注意在同一目录下

这里是我的文件结构,我想生成的是AutoUpdate.py对应的pyc文件
在这里插入图片描述

在生成之前或许我们需要先做一个事情,那就是安装vs_buildtools

如果不安装可能会出现Microsoft Visual C++ 14.0 is required报错,如下图
在这里插入图片描述
当然你可以尝试不安装进行下一步,说不定你电脑上已经存在了,具体安装步骤如下:
放个安装包
https://www.aliyundrive.com/s/vJdgSx3Agbo
选择C++的模块,默认的部分就可以,我已经安装了,安装后是这个样子
在这里插入图片描述

在命令行或终端 cd 到这个目录下,输入命令

python setup.py build_ext --inplace

当前目录下就会生成​一个 build 文件夹,一个 .c 文件,还有我们最终想要的 .pyd 文件​,​自动生成的名字​并不是 AutoUpdate.pyd​​,而是

AutoUpdate.cp38-win_amd64.pyd

这个文件夹下
在这里插入图片描述
如此一来我们的pyc文件就生成好了,此时我们去修改AutoUpdate.py 的源代码,在通过另外一段代码去调用就不会生效了,而是调用的你生成的pyc文件

如何调用

AutoUpdate.py部分代码
在这里插入图片描述
调用就如一个包一样导入即可

from AutoUpdate import Demo
a = Demo()

补充

需要注意的是如果使用pyinstaller打包为exe,需要在这里再次引入AutoUpdate.py用到的包,比如我的完整的就是这样

import json
import os
import requests

from AutoUpdate import Demo
a = Demo()

pyc与pyd区别

​我们​安装的 python 目录下有许多 pyc 文件,这个 c 是编译 compile 过的意思​,可以使用 python 解释器编译 py 文件 成 pyc 字节码文件。使用 pyc 可以加快程序的加载速度,而不能加快程序的实际执行速度,这就是解释为什么我们​安装 python 目录很多第三方库下是 pyc 文件的原因,因为它可以使得 import 一些第三方库的速度加快​。由于 .pyc 文件是编译好的字节码,​它是独立于平台的,因此可以在不同体系结构的计算机之间共享​。其实还有一个和 pyc 类似的字节码文件 pyo,一般 pyo 替代未经优化而创建的 pyc 文件,pyc文件也能够隐藏源码,但是更容易被反编译。
pyc文件的生成方式很简单,百度就可以。

借鉴博客:
https://blog.51cto.com/u_13121424/5093949

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值