场景:
我写好了一个应用的所有代码,我需要进行分发给我的客户,但是我不想让他们得到源码。请问如何操作?, 有没有全平台统一方案(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