[困惑] 写好的 Python 应用如何分发?

316 天前
 yinlei212

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

已知的分发场景:

  1. 源代码分发,直接上传 pypi ,或者 git 让使用。(源码分发不合适)
  2. windows 的话打包成 exe 进行分发(但是这个仅仅只是 windows 平台的)。
3915 次点击
所在节点    Python
33 条回复
shinession
316 天前
pyinstaller+1, 环境什么的都集成进去了, 方便快捷
locoz
316 天前
前几年的 pycon 我记得有一届里有人介绍了个他的产品,专门做 python 代码打包+混淆/加密的,忘记叫啥了,你可以翻一下
Etuloser
316 天前
pyinstaller 分别打 win 平台和 linux 平台的包
fzls
316 天前
用 pyinstaller 就好了
Lighthughjiajin
316 天前
pyinstaller 能保护源码吗?
009694
316 天前
核心源码想要保护要么用 c 这类编译成动态库用 python 调,要么服务化。
myxingkong
316 天前
可以使用 Cython 将 Python 源文件 编译成 动态链接库(.pyd|.so),再使用一个入口文件(不需要编译)去调用你的 app 的启动方法。

main.py
```python
import sys
import my_app

sys.exit(my_app.run())
```

main.py 可以使用 Pyinstaller 单独打包成可执行文件,然后把使用 Cython 编译好的 动态链接库 放到可执行文件的同级目录下,就可以运行了。
cooljiang
316 天前
程序整体用 pyinstaller 的打包的分发的话会有被反编译的风险(很容易被反编译)
结合楼上说的用 Cython 将 py 编译成动态链接库(.pyd/.so)外,楼主如果想进一步保护 py 分发程序,还可以考虑针对 Python 解释器单独进行加密混淆。
liuhai233
316 天前
做成 saas 服务 ^-^
lingeo
316 天前
cython 可以编译成.so ,但是就是没法跨平台,你得分开编译。
ohayoo
316 天前
@locoz #2 是的,你说的这个 我也有印象
Abbeyok
316 天前
pyarmor
bthulu
316 天前
编译成 native 就行了
orcal
316 天前
Nuitka 吧,简单高效全平台
airchaoz
316 天前
@orcal 之前用过这个,打包没有 pyinstaller 方便,不知道现在怎么样了
orcal
316 天前
还是没有 pyinstaller 方便哈哈
dianso
316 天前
太繁琐,依赖,库

我已经全面转 go

就是看在开发迅速,编译单文件,不依赖 libc ,直接全平台分发
Alicewish
316 天前
nuitka ,如果有复杂点的库那么打包成功率比 pyinstaller 高。
mnsw
316 天前
@shinession #1 但这个只能本平台打包本平台的吧?不能跨平台
lybcyd
316 天前
单靠 pyinstaller 不行,这个反编译很简单的,想要保护源代码肯定还要混淆加密

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005684

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX