Java 有 fatjar js 有 webpack
Python 有什么工具可以把需要的依赖都打包到一起, 用户可以直接使用的, 不需要再手动安装依赖。
最好是生产级别的, 小工具就算了。
如果没有, 那么 Python 社区基于什么样的想法没有实现这个呢?
Java 有 fatjar js 有 webpack
Python 有什么工具可以把需要的依赖都打包到一起, 用户可以直接使用的, 不需要再手动安装依赖。
最好是生产级别的, 小工具就算了。
如果没有, 那么 Python 社区基于什么样的想法没有实现这个呢?
|
jeffersonpigDec 21, 2019
1
pyinstaller?
|
|
ClericPyDec 21, 2019
2
shiv?
|
|
3
|
|
zjsxwcDec 21, 2019
4
python 打包成一个 exe 类似的可执行文件?
|
|
5
@ClericPy #2 我研究一下, 看了一下 readme, 貌似 C 扩展的包会有问题
|
|
6
@zjsxwc #4 不是, 是把所有的依赖都打包到 ./lib 下面
|
|
CallMeReznovDec 21, 2019
7
pyinstaller 之前处理那种多重引用也会报错,不过有人说可以把需要的包复制到目录下编译.
我也是听说,木有尝试过 |
|
JasonEWNLDec 21, 2019 via iPad
8
翻译一下就是 “用户只要拿到代码就能跑”?如果是这个意思可以考虑直接使用 venv,会直接创建依赖的 bin 和 lib。(而且有个好处就是用户能一直用你配置的依赖库版本,防止自带的库版本不一致产生的各种售后问题。)
|
|
9
pex / shiv / xar
这几个都差不多,我用的是 pex。 pex 实现原理是,python 支持把代码放到一个 zip 文件里面,直接执行 zip 文件。所以把第三方依赖和你的源代码打包进去,声明入口就可以直接跑这个 pex 文件。当然使用的解释器还是你的系统级别的。所以 pex 文件比较小,不需要包含解释器(像 venv 之类的解决方法)。 对于涉及到 C 的库,我个人使用到的都是纯 py 的库,没有用到 C 结合的,不过应该也是支持的,只能你找找相关帖子了。 |
|
niubee1Dec 21, 2019
10
涉及 C 的库几乎都会有问题,因为编译目标毕竟是不一样的,都会需要重新编译的过程
|
|
gwy15Dec 21, 2019
11
另外 pex 存在一定的问题是,资源文件( templates, static, etc.) 打包到 pex 里面是不识别的,需要独立出来。
要分发面向用户的话,pex 因为需要用户自己装解释器,所以最好的方法还是用 pyinstaller 直接打包成二进制文件 |
|
zero469Dec 21, 2019
12
蹲点同求
|
|
sunwei0325Dec 21, 2019
13
pyinstaller, 都 6k 多个 star 了, 放心用吧
|
|
tt67wqDec 21, 2019
14
还是直接 docker 吧
|
|
JeroDec 21, 2019
15
客户端程序或工具,可以考虑 pyinstaller
|
|
masker0817Dec 21, 2019 via Android
16
Docker
|
|
MarsssDec 21, 2019
17
如果在一开始考虑到这个问题,然后直接用 python 自带的 venv 就不存在这个问题了。虚拟环境中的 site-packages 只有项目所用到的包,没有多余的东西,直接把这个环境拷贝给用户就行了。
建议新建一个 venv,安装一遍依赖。python 自带,还是用原来的 pip 安装依赖,切换个国内源,很香的。 |
|
bllessDec 21, 2019 via Android
18
🙄我之前就是想写个小工具给没有程序基础的朋友用,一轮工具试过去都还不行,干脆用 go 重写了一遍
|
|
wangyzjDec 21, 2019
19
pyinstaller
|
|
20
@tt67wq #14 你想让我的用户(不会依赖管理的)安装 docker ?
|
|
ClericPyDec 21, 2019
21
@lihongjie0209 #5 C 扩展本来就不是跨平台的, 毕竟得 build, 保证打包机环境一致就行了. shiv 是 linkedin 很早以前按 PEP 441 搞的
|
|
wzwwzwDec 21, 2019
22
用 go 吧。pyinstaller 打包成 exe,特别慢。
|
|
20150517Dec 21, 2019 via Android
24
docker
|
|
wuwukai007Dec 21, 2019 via Android
25
什么 docker 啊,能审题吗各位?
|
|
tfdetangDec 21, 2019
26
你也没说大概什么样的程序,需要在什么样的环境下运行,linux? win? 有不少包都是有系统依赖的,又不是光把 python 装好就行的。 比较复杂的程序都建议用 docker 来做交付,省的麻烦自己
|
|
hhhsuanDec 21, 2019
27
venv 就是干这事的啊,开发完把整个环境打包就行了。
|
|
sunwei0325Dec 22, 2019
28
|
|
secondwtqDec 22, 2019
31
楼主 Java 用得这么溜用啥 Python…居然还有推荐 Go 的,简直是故意气楼主
|
|
32
@secondwtq 写个小工具当然不用 java,go 也可以, 只是不熟悉。
|
|
loginv2Dec 22, 2019
33
我记得以前狗阿根廷就是打包的 python 不知道那种是怎么弄的
|
|
anewgDec 22, 2019
35
docker 笑了,干脆让客户自己写代码去吧
|