我正在编写一款带gui界面的程序,准备用pyinstaller转成exe文件发布试用,但是考虑到后面可能商用,如何才能避免被他人破译?
瞅瞅
https://blog.csdn.net/weixin_43207777/article/details/108351862
转为.pyc文件
对你的Python代码进行加密,参考链接:
https://cloud.tencent.com/developer/article/1849691
解决方法
一般的加密方式网上基本都有对应的解密手段,直接用商用付费的工具可能更放心点,比如pyarmor
等。
因为你的代码加密是想要商用的,可以用pyarmor
试下,
它本身包含 代码脚本混淆 和 许可证分发使用 两个功能,
看起来已经有几年的发展历史了。
大概是对你的代码进行混淆,然后你通过发放对应license的方式来让用户进行使用。
如有问题及时沟通
一、.打包py项目所有源文件为pyc,防止源码明文泄露
1.项目路径下建立compile.py(代码在文末)文件
2.修改要打包的文件和目录
# compile.py
import compileall
import shutil
import os
current_dir = os.path.dirname(os.path.abspath(__file__))
dist_dir = current_dir + r"\dist"
def mk_dist(copyfile=None, copytree=None):
try:
if os.path.exists(dist_dir):
shutil.rmtree(dist_dir)
os.mkdir(dist_dir)
if copyfile:
for filename in copyfile:
shutil.copyfile(filename, dist_dir + '\\' + filename)
if copytree:
for dirname in copytree:
shutil.copytree(dirname, dist_dir + '\\' + dirname)
except Exception as ex:
print(ex)
def compile_pj():
compileall.compile_dir(dist_dir, legacy=True)
def remove_file(dir, postfix):
"""删除指定目录下指定后缀的文件"""
if os.path.isdir(dir):
for file in os.listdir(dir):
remove_file(dir + '/' + file, postfix)
else:
if os.path.splitext(dir)[1] == postfix:
os.remove(dir)
def remove_dir(del_dir, filename="__pycache__"):
"""删除__pycache__目录"""
if os.path.isdir(del_dir):
for file in os.listdir(del_dir):
if file == filename:
shutil.rmtree(del_dir + '/' + file, True)
remove_dir(del_dir + '/' + file)
def main():
# 根目录要拷贝的文件
copyfile = [
"main.py" #项目入口文件,会编译
]
# 根目录要拷贝的目录
copytree = [
"model1", #模块文件夹1,会编译
"model2" #模块文件夹2,会编译
]
mk_dist(copyfile=copyfile, copytree=copytree)
compile_pj()
remove_file(dist_dir, ".py")
remove_dir(dist_dir, filename="__pycache__")
if __name__ == "__main__":
main()
pyinstaller 打包有个选项,能设置加密密钥
python不是有哈希加密的吗?你把一些重要的逻辑类的代码加密成哈希值,其他的一些简单的代码可以不加密
这都什么年代了,就别考虑这个了,python基本上全部都是开源项目。