【Python】告别.py源码泄露!一键批量编译.pyd,还能跨Python版本兼容!
一、项目简介
写Python项目最头疼的是什么?辛辛苦苦写的代码,交付时源码直接暴露给别人。用py_compile编译成pyc吧,反编译工具一秒破解。用Cython手动编译成pyd?写setup.py、配置Extension、处理依赖……折腾半天才能搞定一个文件
今天分享一个能彻底解决这些痛点的工具——py2pyd
传统方案的三大痛点
- 手动编译太麻烦:每个py文件都要写setup.py,还要处理复杂的Cython配置
- 批量处理靠循环:项目有几十个py文件?手写脚本遍历,处理子目录更头疼
- 跨版本不兼容:Python 3.7编译的.pyd,在3.8上直接报错无法导入
py2pyd:一键批量 + 跨版本兼容
这个工具的核心能力就两条:
① 智能批量编译:传入一个文件夹,自动遍历所有子目录,把所有.py文件一键编译成.pyd。支持单个文件或整个目录两种模式。
② 跨版本兼容(独家特性):加上-c -min py3.7参数,编译出的.pyd可以在Python 3.7及以上版本通用运行-。再也不用为每个Python版本单独编译一遍!支持的最低版本可选:py3.7、py3.8、py3.9、py3.10、py3.11、py3.12、py3.13。
PyCharm一键配置(生产力拉满)
在PyCharm的External Tools中添加上面两条命令, 以后右键文件夹 → External Tools → 选对应版本,一键完成全部编译。从此告别命令行敲代码!
适用场景
- 商业项目交付:保护核心算法源码不被泄露
- 私有库分发:用户直接
import使用,看不到源码- - 多环境部署:跨版本编译,一次构建到处运行
源码保护这件事,早用早省心。赶紧试试吧!
二、py转pyd
核心配置参数
PyCharm工具运行, 生成 pyd
三、测试
c01_arithmetic_operations.py
# -*- coding: utf-8 -*-''' @Time : 2025/12/30 20:39 @Author : TYH @File : c01_arithmetic_operations.py @Software : PyCharm '''# 函数defadd(a:float,b:float)->float:""" 加法运算 参数: a: 第一个数 b: 第二个数 返回: 两个数的和 """passdefcalculate(a:float,b:float)->dict:""" 一次性计算所有四则运算 参数: a: 第一个数 b: 第二个数 返回: 包含所有运算结果的字典 """passdefdiv(a:float,b:float)->float:""" 除法运算 参数: a: 被除数 b: 除数 返回: a / b 的结果 异常: 如果 b == 0,抛出 ValueError """passdefmul(a:float,b:float)->float:""" 乘法运算 参数: a: 第一个因数 b: 第二个因数 返回: 两个数的乘积 """passdefsub(a:float,b:float)->float:""" 减法运算 参数: a: 被减数 b: 减数 返回: a - b 的结果 """passc02_test
# -*- coding: utf-8 -*-''' @Time : 2026/6/7 22:08 @Author : TYH @File : c02_test.py @Software : PyCharm '''""" """fromc01_arithmetic_operationsimportadd,sub,mul,div# 测试代码(当直接运行此文件时执行)if__name__=="__main__":print("四则运算模块测试:")# 测试数据test_cases=[(10,2),(8,0),# 测试除数为零的情况]fori,(a,b)inenumerate(test_cases,1):print("\n"+"="*30)print(f"测试用例{i}: a={a}, b={b}")print(f"{a}+{b}={add(a,b)}")print(f"{a}-{b}={sub(a,b)}")print(f"{a}×{b}={mul(a,b)}")try:result=div(a,b)print(f"{a}÷{b}={result}")exceptValueErrorase:print(f"{a}÷{b}={e}")运行成功,可以跨 3.7 - 3.13多个版本运行
只有c01_arithmetic_operations.pyd, 和c02_test.py
四、私聊或评论告诉我005,获取源码
附完整脚本,好用记得回来点个赞哦!有什么改进建议或使用问题,欢迎评论区交流~
开发环境:
Windows 11,Python 3.8.8