Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FeelUOwn 打包与发布 #313

Open
7 of 14 tasks
cosven opened this issue Jan 31, 2020 · 2 comments
Open
7 of 14 tasks

FeelUOwn 打包与发布 #313

cosven opened this issue Jan 31, 2020 · 2 comments
Labels
FEP feeluown enhancement proposal

Comments

@cosven
Copy link
Member

cosven commented Jan 31, 2020

  • 作者:@cosven
  • 创建时间:2020-01-31
  • 最近更新:2020-02-05
  • 最新状态:
    • 2020-02-05 - 将 pyqtdeploy 作为打包工具的一种,列入考虑中

简介与背景

FeelUOwn 打包发布一直是个头疼的问题。当前,我们将项目打包成一个 Python 源码包:feeluown,也就是通过 python setup.py sdist 生成一个 feeluown-{version}.tar.gz 包,然后将这个包上传到 pypi 上。

但这个方案存在几个问题,对于不同的使用者,问题也不完全相同。

“小白”用户

“小白”用户指的对技术毫无了解,普通的 PC 使用者。这类用户期望的可能是一键安装,一键运行。一般来说,我们认为“小白”用户主要使用的是 macOS 和 Windows。而目前的安装有好几个步骤,并且每个步骤有可能会出现各种各样的问题,这对大家是非常不友好的。

怎样实现 Windows 下的一键安装与运行?据目前所知,一个比较可行的方式是将 FeelUOwn 打包成一个 exe 文件,或者是一个 exe 文件加若干其他文件,用户下载,双击就能运行。而目前看,PyInstaller 可以实现这个需求。

怎样实现 macOS 下的一键安装与运行?一个比较可行的方式是将 FeelUOwn 打包成一个 app,用户下载,将它放入 Applications 目录,然后双击运行。目前看,PyInstaller 也能实现该需求。

Python 开发人员

Python 开发人员对 pip 都会比较熟悉,而目前 FeelUOwn 可以通过 pip 来安装,这对 Python 开发人员来说是比较友好的。

不过 FeelUOwn 还依赖 libmpv, PyQt5 等三方库,所以除了 pip 之外,大家通常还需要使用各个系统的包管理工具来安装这些依赖。总的来说,这些操作对于一个 Python 开发人员来说应该都不算复杂,但是整体流程还可以更加精简。

Python 官方目前推荐的打包方式是 wheel 包,这个包的一个最大的好处是:用户安装时,不需要进行构建,对用户的环境要求非常低。并且,wheel 包中是可以包含动态链接库,也就是说,我们可以把 libmpv 这类依赖也直接打到包里,使用这种打包方式,可以让用户通过 pip 一键安装。

其它用户

这里说的“其它用户”应该是有一定的技术基础、或者开发能力,自己有一定的问题解决能力(比如主动 Google,使用命令行进行常见操作)。这类用户通常对自己所使用的系统的包管理工具是比较熟悉的,举个例子,macOS 用户对 brew 应该有一定了解;Debian 用户对 apt 应该有一定了解;Arch 用户对 aur 有一定了解。他们比较想要的可能是一个适用它们系统的包,但是目前的安装方式,对他们也是可以接受的,只是比较麻烦和折腾。

问题小结

上面各类用户的问题总结起来,大概可以这样总结

用户类型 描述 期望 可能的方案
小白用户 很难接受现状 希望能有一键安装运行 pyinstaller pyqtdeploy
Python 开发者 接受现状 wheel 包更好 wheel
其它用户 勉强接受现状 有自己使用的系统的包 aur, deb, rpm, AppImage, brew 等

注:这个分类的目的在于明确目前的问题,将一个大的问题拆分成小问题,有助于后续整理出更好地解决方案。这个分类也不是百分百正确,大家没必要对号入座,比如我自己是一个 Python 开发者,但我可能也想要一个一键安装运行的方式。

解决方案

上面提到了三类解决方案:

  1. 使用类似 pyinstaller 的工具来打包 FeelUOwn
  2. 给 feeluown 打一个 wheel
  3. 针对不同系统、不同包管理工具,给 FeelUOwn 打不同的包

这三类方案存在一些关系:

  • 第一类方案基本是独立与其它两个方案的
  • 第二个方案是可能可以为第三类方案服务的

现状以及一些可以做的一些事情

@cosven cosven added the FEP feeluown enhancement proposal label Jan 31, 2020
@wgjak47
Copy link

wgjak47 commented Mar 8, 2020

https://github.com/microcai/gentoo-zh/tree/master/media-sound/feeluown

我给Gentoo打了一个包...

@cosven
Copy link
Member Author

cosven commented Mar 8, 2020

https://github.com/microcai/gentoo-zh/tree/master/media-sound/feeluown

我给Gentoo打了一个包...

非常感谢 ~ 稍后,我会把这个方式更新到 quickstart 文档上去。

This was referenced Jun 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FEP feeluown enhancement proposal
Projects
None yet
Development

No branches or pull requests

2 participants