[困惑] 写好的 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
代码出现了一些 bug (代码由不同的人,不同的任务堆积成) 现在需要修复这个 bug 。bug 原因是其他人的代码没考虑周全造成的 第一种: 找到这个没考虑周全的点 并且打补…
我编写了 fastgithub,这个工具可以用于本机与 github 直连,v2ex 也一样。大家有需要吗? github.com/dotnetcore/FastGithub…
下面是近期收录的一些文章和资源,希望对你有用。 目录 系统方面各种教程Web库HTML 5 编程规范其它 系统方面 印度的电子商务网站flipkart的性能扩展(PPT…