[困惑] 写好的 Python 应用如何分发?
场景:
我写好了一个应用的所有代码,我需要进行分发给我的客户,但是我不想让他们得到源码。请问如何操作?, 有没有全平台统一方案(win/mac/linux)?
已知的分发场景:
源代码分发,直接上传 pypi ,或者 git 让使用。(源码分发不合适)
windows 的话打包成 exe 进行分发(但是这个仅仅只是 windows 平台的)。
pyinstaller+1, 环境什么的都集成进去了, 方便快捷
前几年的 pycon 我记得有一届里有人介绍了个他的产品,专门做 python 代码打包+混淆/加密的,忘记叫啥了,你可以翻一下
pyinstaller 分别打 win 平台和 linux 平台的包
用 pyinstaller 就好了
pyinstaller 能保护源码吗?
核心源码想要保护要么用 c 这类编译成动态库用 python 调,要么服务化。
可以使用 Cython 将 Python 源文件 编译成 动态链接库(.pyd|.so),再使用一个入口文件(不需要编译)去调用你的 app 的启动方法。main.pypythonimport sysimport my_appsys.exit(my_app.run())
main.py 可以使用 Pyinstaller 单独打包成可执行文件,然后把使用 Cython 编译好的 动态链接库 放到可执行文件的同级目录下,就可以运行了。
程序整体用 pyinstaller 的打包的分发的话会有被反编译的风险(很容易被反编译)结合楼上说的用 Cython 将 py 编译成动态链接库(.pyd/.so)外,楼主如果想进一步保护 py 分发程序,还可以考虑针对 Python 解释器单独进行加密混淆。
做成 saas 服务 ^-^
cython 可以编译成.so ,但是就是没法跨平台,你得分开编译。
#2 是的,你说的这个 我也有印象
pyarmor
编译成 native 就行了
Nuitka 吧,简单高效全平台
之前用过这个,打包没有 pyinstaller 方便,不知道现在怎么样了
还是没有 pyinstaller 方便哈哈
太繁琐,依赖,库 我已经全面转 go就是看在开发迅速,编译单文件,不依赖 libc ,直接全平台分发
nuitka ,如果有复杂点的库那么打包成功率比 pyinstaller 高。
#1 但这个只能本平台打包本平台的吧?不能跨平台
单靠 pyinstaller 不行,这个反编译很简单的,想要保护源代码肯定还要混淆加密
pywebio 做成网页
pyarmor 加密后,打包个镜像
这个好
pyarmor
CURD 写多了,曾对以下几个问题思虑不解,见缘回答。 随便谈谈,问题较多,不需要具体结果,只谈大概思维逻辑。 1. 语法检查 常见操作系统、包括某些 IDE 、文本编辑器都对…
从开始了解 Kubernetes 到现在两三天了, 想个人学习如何部署. 用过 docker 没用过 podman, 有 Linux 基础. 算上服务器有三台设备, 打算将主从…
鄙人主 Java 开发,对前端技术了解不多,在之前 RN 火热🔥时期,由于会一点前端,上手相对简单,在移动端技术选型时选择了 RN,但是这几年慢慢的发现很多 RN 组件库都没人…