[困惑] 写好的 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
我的 Mac 上装了很多 Python 环境,除了 Mac 本身自带的之外,还有 Anaconda 、MiniConda 、Python 官网安装的,以及一大堆历史遗留创建的虚…
最近开发一个 flutter 的项目,一开始并没有考虑 web 端适配,都是按照 iOS 和安卓来进行开发和适配的。后面说要上一个 web 版本,就一个个三方库去查看处理下,发…
如题,我在号称隐私保护强的 CalyxOS ( Android 13 )安装了哔哩哔哩 app ,然后浏览了几个视频,再卸载,再安装回去,结果发现它仍然保留了我卸载前的浏览记录…