page contents

别再纠结 PyInstaller 和 Nuitka 了,试试pyd这种折中方案

只要有做过Python工具交付,基本都会遇到几个绕不开的问题:项目要给别人用,但不想直接给源码,简单的用PyInstaller打包成exe,很快就被反编译, Nuitka确实更安全,但编译时间长、环境要求高,还很容易踩C编译的各种坑,项目规模一大,维护成本直线上升。 那有没有一种折中的方案呢?那就是可以利用Pyinstaller+pyd的形式。

attachments-2026-04-ZqCsnWLE69e038ee27739.png只要有做过Python工具交付,基本都会遇到几个绕不开的问题:项目要给别人用,但不想直接给源码,简单的用PyInstaller打包成exe,很快就被反编译, Nuitka确实更安全,但编译时间长、环境要求高,还很容易踩C编译的各种坑,项目规模一大,维护成本直线上升。 那有没有一种折中的方案呢?那就是可以利用Pyinstaller+pyd的形式。

pyd

.pyd本质上是Windows下的Python扩展模块:内部是C/C++编译后的二进制,不会被直接被反编译成源码。 Python可以像普通模块一样import。.pyd 就是Python的DLL,Python 可以调用,但别人很难看懂内部实现。可以将一些不想暴露的核心算法或者核心代码里封装起来,采用pyd的编译形式,大大增加了软件的安全性。

安装与环境准备

执行下面命令安装下需要的依赖库

pip install cythonpip install setuptools wheel

如果之前没有配过C编译环境的,我们还需要去下载个Build Tools for Visual Studio

https://aka.ms/vs/17/release/vs_BuildTools.exe

下载后运行安装器,选择C++相关组件即可。

示例

假设我们的项目结构如下:

project/├── core/│   ├── logic.py      #核心逻辑├── main.py           #程序入口├── setup.py          #pyd 编译配置

在核心逻辑脚本里logic.py,添加一个测试的加法函数:

def calc(a, b):    return a * b + 42

在setup.py里,把需要编译的脚本文件logic.py加进来

from setuptools import setupfrom Cython.Build import cythonize

setup(    ext_modules=cythonize(        "core/logic.py",        compiler_directives={"language_level": "3"}    ))

在控制台里执行下命令:

python setup.py build_ext --inplace

执行完成之后,你会看到在当前的项目文件夹里多了一个pyd文件如下:logic.cp310-win_amd64.pyd

说明我们编译成功了,完成之后,原始 logic.py 可以删除,只需要保留 .pyd即可

然后在main里直接用

pydfrom core.logic import calc

print(calc(2, 3))

用法

和我们引入模块的写法一样,不需要变化 ,可以顺利执行编译,然后我们再用PyInstaller进行编译打包的时候,就不需要logic.py了,把他删除掉,保留pyd即可,发现依然可以正常顺利编译打包运行。

最终效果就是:exe可直接运行,核心逻辑是二进制,即使用我们顶部介绍的方法解包后也看不到core里的代码的,反编译难度明显提高。大大增加了软件的案例性

所以完全不需要进行全项目 Nuitka,这样的方案编译速度快,对原有 Python 项目侵入性小。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-04-16 09:18
  • 阅读 ( 28 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1999 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1999 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章