Depsland 是针对轻量化的应用分发方案打造的基础服务设施.
Depsland 可用于帮助开发者快速分发应用, 并为用户提供简单友好的程序安装, 升级和管理服务.
什么样的人群可能需要 Depsland?
-
我是一名开发者...
-
我想要减少 Python 应用打包体积
-
我不想每次都把 python 的所有依赖 (matplotlib, numpy, pyside, ...) 都打包进去
原因:
- 打包体积臃肿
- 打包, 压缩, (用户) 解压缩过程都比较慢, 体验不是很好
- 每次都打包相同的资源, (某些情况下) 用户电脑上已经有这些依赖了, 为什么不能利用现成的呢
- 我只想写一个很简单的小工具, 给朋友用一用. 对我来说一个 hello world 程序, 每次打包都要带一个庞大的 Qt 依赖库, 令我难以接受
- ...
-
我想让整个过程快点
- 减少不必要的打包资源, 加快打包时间
- 降低打包体积, 提高网络传输效率
-
我只关心我的软件功能该怎么设计和实现, 至于如何在客户电脑上安装, 升级, 运行和接收反馈, 我想交给一个既成熟又简单的第三方来做 (-> 这就是 Depsland)
-
我想要一个开源, 绝大部分功能免费的此类服务
-
我需要为我的软件制作一个启动器, 例如, 在 Windows 上它看起来就是一个 exe 文件, 有软件 logo, 双击即可启动. 最好能把它放在桌面, 开始菜单等明显的位置
-
我想要让我的 Python 应用在多个平台上运行 (Windows, macOS, Linux 等)
-
-
我是一名用户...
-
我不想下载体积庞大的软件
原因:
- 我的网络不是很好, 下载这类软件总是等待很长时间
- 我觉得它的体积与功能 "不符", 这让我怀疑它是不是塞了太多根本用不到的东西, 导致体积太臃肿了
- 我的硬盘空间有限, 一个动辄上百兆的软件对我来说难以接受
-
我不喜欢软件安装在非常隐蔽的位置, 总是担心卸载不干净
-
我想要一个安装, 升级, 启动都很简单, 不需要去学就会的 "一键式操作"
-
如果不幸升级失败 (例如网络原因, 电脑意外断电等), 请帮我安全地回滚到上个版本
-
升级的时候, 不要把我的个人文件给删掉
-
升级后, 仍然保留我的个人偏好配置, 不需要我重新配一遍
-
如果你有这些需求, 那么 Depsland 将有希望成为你在寻找的工具.
注意: 当前版本仍处于早期开发阶段, 不能满足以上列出的所有需求!
Depsland 具有以下特性:
-
体积优先
Depsland 会充分利用缓存资源, 不会重复下载或安装 Python 依赖库. 所有依赖最多只会存在一份, 并以软链接的形式进行分发.
这意味着除首次安装外, 所有后续的安装, 升级所需的时间会大幅减少, 最快甚至可以达到毫秒级.
Depsland 在升级时, 使用增量更新策略, 当旧版本有相同文件时, 会优先复用本地的. 当不存在时才会从网络获取.
-
隔离性
Depsland 会为每个应用创建独立的虚拟环境.
-
离线安装
Depsland 支持完全无网的安装方式. 软件发布者可以通过传统的方式将所有资源预先加入到打包当中, 再通过优盘等方式交给客户安装到目标机器.
-
快捷方式
TODO
-
软件管理
TODO
-
安装 depsland
# 使用 pip 安装 pip install depsland # 测试 depsland -h
-
编辑项目清单文件
首先, 使用
depsland init
命令创建一个清单文件:cd <my_project> depsland init # 在项目根目录下生成一个 "manifest.json" 文件
手动编辑该清单文件, 记录你的项目在打包后要包含的路径, 以及依赖库列表:
TODO
使用
depsland build
构建安装包:depsland build
最后发布 (到 OSS):
depsland publish
-
将安装包发给用户 (TODO)
以下加粗部分为用户手动操作.
-
安装 depland
- 下载 depsland 安装包 (下载地址 (TODO), 该安装包体积约 55mb)
- 解压缩
- 双击解压后的目录下的 "setup.exe", 完成安装
-
开发者发给用户一个应用安装包, 下面以 "hello-world-1.0.0.exe" 为例
一般来说, 该安装包的体积在 1kb ~ 100kb 之间.
-
用户双击 exe 安装
-
depsland 从 oss 上拉取一个 hello world 项目相关的清单文件
该清单文件记录了 hello world 的在线资源链接, 以及依赖清单.
-
depsland 根据清单中列出的资源链接, 下载 hello-world 软件的相关文件资源
- 如果该资源在本地的旧版本中能够找到, 则不会索取网络资源, 而是在本地以软链接形式 "拷贝"
-
depsland 根据清单中列出的 python 依赖, 使用 pip 来下载所需的依赖
- 如果依赖已经下载过, 则不会重复下载. 这意味着除首次安装外, 所需的安装时间会大幅缩减
-
完成下载和部署后, depsland 会为 hello-world 生成一个桌面启动器
-
-
用户来到桌面, 可以看到 "Hello World.exe" 启动器, 双击即可打开该软件