Skip to content

Latest commit

 

History

History
165 lines (94 loc) · 5.66 KB

README.zh.md

File metadata and controls

165 lines (94 loc) · 5.66 KB

Depsland: 面向用户的 Python 应用管理工具

Depsland 是针对轻量化的应用分发方案打造的基础服务设施.

Depsland 可用于帮助开发者快速分发应用, 并为用户提供简单友好的程序安装, 升级和管理服务.

下载 Depsland

适用群体

什么样的人群可能需要 Depsland?

  • 我是一名开发者...

    • 我想要减少 Python 应用打包体积

    • 我不想每次都把 python 的所有依赖 (matplotlib, numpy, pyside, ...) 都打包进去

      原因:

      • 打包体积臃肿
      • 打包, 压缩, (用户) 解压缩过程都比较慢, 体验不是很好
      • 每次都打包相同的资源, (某些情况下) 用户电脑上已经有这些依赖了, 为什么不能利用现成的呢
      • 我只想写一个很简单的小工具, 给朋友用一用. 对我来说一个 hello world 程序, 每次打包都要带一个庞大的 Qt 依赖库, 令我难以接受
      • ...
    • 我想让整个过程快点

      • 减少不必要的打包资源, 加快打包时间
      • 降低打包体积, 提高网络传输效率
    • 我只关心我的软件功能该怎么设计和实现, 至于如何在客户电脑上安装, 升级, 运行和接收反馈, 我想交给一个既成熟又简单的第三方来做 (-> 这就是 Depsland)

    • 我想要一个开源, 绝大部分功能免费的此类服务

    • 我需要为我的软件制作一个启动器, 例如, 在 Windows 上它看起来就是一个 exe 文件, 有软件 logo, 双击即可启动. 最好能把它放在桌面, 开始菜单等明显的位置

    • 我想要让我的 Python 应用在多个平台上运行 (Windows, macOS, Linux 等)

  • 我是一名用户...

    • 我不想下载体积庞大的软件

      原因:

      • 我的网络不是很好, 下载这类软件总是等待很长时间
      • 我觉得它的体积与功能 "不符", 这让我怀疑它是不是塞了太多根本用不到的东西, 导致体积太臃肿了
      • 我的硬盘空间有限, 一个动辄上百兆的软件对我来说难以接受
    • 我不喜欢软件安装在非常隐蔽的位置, 总是担心卸载不干净

    • 我想要一个安装, 升级, 启动都很简单, 不需要去学就会的 "一键式操作"

    • 如果不幸升级失败 (例如网络原因, 电脑意外断电等), 请帮我安全地回滚到上个版本

    • 升级的时候, 不要把我的个人文件给删掉

    • 升级后, 仍然保留我的个人偏好配置, 不需要我重新配一遍

如果你有这些需求, 那么 Depsland 将有希望成为你在寻找的工具.

注意: 当前版本仍处于早期开发阶段, 不能满足以上列出的所有需求!

项目特性

Depsland 具有以下特性:

  1. 体积优先

    Depsland 会充分利用缓存资源, 不会重复下载或安装 Python 依赖库. 所有依赖最多只会存在一份, 并以软链接的形式进行分发.

    这意味着除首次安装外, 所有后续的安装, 升级所需的时间会大幅减少, 最快甚至可以达到毫秒级.

    Depsland 在升级时, 使用增量更新策略, 当旧版本有相同文件时, 会优先复用本地的. 当不存在时才会从网络获取.

  2. 隔离性

    Depsland 会为每个应用创建独立的虚拟环境.

  3. 离线安装

    Depsland 支持完全无网的安装方式. 软件发布者可以通过传统的方式将所有资源预先加入到打包当中, 再通过优盘等方式交给客户安装到目标机器.

  4. 快捷方式

    TODO

  5. 软件管理

    TODO

快速开始 (流程演示)

开发者

  1. 安装 depsland

    # 使用 pip 安装
    pip install depsland
    # 测试
    depsland -h
  2. 编辑项目清单文件

    首先, 使用 depsland init 命令创建一个清单文件:

    cd <my_project>
    depsland init  # 在项目根目录下生成一个 "manifest.json" 文件

    手动编辑该清单文件, 记录你的项目在打包后要包含的路径, 以及依赖库列表:

    TODO

    使用 depsland build 构建安装包:

    depsland build

    最后发布 (到 OSS):

    depsland publish
  3. 将安装包发给用户 (TODO)

用户

以下加粗部分为用户手动操作.

  1. 安装 depland

    1. 下载 depsland 安装包 (下载地址 (TODO), 该安装包体积约 55mb)
    2. 解压缩
    3. 双击解压后的目录下的 "setup.exe", 完成安装
  2. 开发者发给用户一个应用安装包, 下面以 "hello-world-1.0.0.exe" 为例

    一般来说, 该安装包的体积在 1kb ~ 100kb 之间.

  3. 用户双击 exe 安装

    1. depsland 从 oss 上拉取一个 hello world 项目相关的清单文件

      该清单文件记录了 hello world 的在线资源链接, 以及依赖清单.

    2. depsland 根据清单中列出的资源链接, 下载 hello-world 软件的相关文件资源

      1. 如果该资源在本地的旧版本中能够找到, 则不会索取网络资源, 而是在本地以软链接形式 "拷贝"
    3. depsland 根据清单中列出的 python 依赖, 使用 pip 来下载所需的依赖

      1. 如果依赖已经下载过, 则不会重复下载. 这意味着除首次安装外, 所需的安装时间会大幅缩减
    4. 完成下载和部署后, depsland 会为 hello-world 生成一个桌面启动器

  4. 用户来到桌面, 可以看到 "Hello World.exe" 启动器, 双击即可打开该软件