跟进问题https://github.com/cool-RR/PythonTurtle/pull/105#issuecomment -421965482, #106 和 #90,我想开始收集有关如何(最好)为所有人打包的信息PythonTurtle 运行的平台。 当我们知道如何手动执行包装时,将这一切自动化将是一项简单的任务。
换句话说,我们需要
注意:如果在这个问题上写这个被证明不舒服,我们可能想使用项目 Wiki来帮助我们前进。
我们目前似乎在 Windows 和 macOS 上使用py2exe和py2app 。
根据最近在 PyCon Otto上的一次PyInstaller ,它允许为 Windows、macOS 和 GNU/Linux 等构建独立的可执行文件。
我同意我们绝对应该使用 PyInstaller 而不是 py2exe 和 py2app。
我同意我们需要一个可靠和自动的构建过程。
我们也不应该忘记构建PythonTurtle Python 包并在发布时将其推送到 PyPI。
我还建议通过将 Git 标签(带有版本号)推送到 GitHub 存储库来触发发布。 然后可以通过发布页面下载安装程序。 我希望这一切都能以无缝的方式实现。
我同意,虽然这种自动化是一个有点高的目标,但如果我们甚至达到可以发布的地步,我会欣喜若狂。
如果我们甚至达到可以发布的地步,我会欣喜若狂。
然后准备你的宇航服! :微笑:
正如怀疑的那样,PyInstaller 将需要在它应该为其构建安装程序的基础设施上
我既没有 Windows 也没有 Mac。 因此,我需要做一些繁琐的工作,了解如何在 AppVeyor 上完成构建。 此外,我们需要一个安装了 Python 3 的 macOS(并且交叉手指,文档只是过时的,我们也可以使用 Python 3 构建)。
我可能最好从自动构建 Python 包开始(并自动将其上传到 PyPI)。 IIUC,无论如何,使用 PyInstaller 的(某些功能)构建需要setup.py
。
我们将有一种可能的方式来安装 PythonTurtle。
您想将我添加为PyPI 项目的维护者吗? 当我可以使用自己的凭据时,将使我更容易自动化操作。 不出所料,我的用户名是“bittner”。
我将您添加为 PyPI 的维护者。
关于 PyInstaller,我想知道带有 ReactOS 的 VM 是否可以用于生成 Windows 安装程序。
要让pip install PythonTurtle
安装程序和所有需要的依赖项被证明是困难的:
结论:
install_requires=['wxPython']
到setup()
,但是除非已经安装了先决条件(在自述文件中提到),否则这将失败。 我们可能会发现 - 非常技术性的错误 - 并在安装失败的情况下打印有用的提示。wx
模块(应用程序模块中的ModuleNotFoundError
)时打印友好的_reminder_。使用platform.release()
和/或os.name
以用户友好的“自动检测先决条件”方式进行操作是可能的,但也非常麻烦。 我建议,我们只需打印一条文本消息,然后通过 URL 参考自述文件的安装部分。
我想知道带有 ReactOS 的 VM 是否可以用于生成 Windows 安装程序。
我不确定我们将如何在云中的服务上使用虚拟机,以自动方式构建 PythonTurtle 包。 你能详细说明一下吗? (您打算仅在开发人员机器上本地使用吗?)
你说得对,我没有考虑清楚。
我想有2个问题:
ReactOS 可以使用 PyInstaller 生成 Windows 安装程序吗?
我们可以将它设置为在云端自动工作吗?
假设第一个问题的答案是肯定的,并且没有提供该服务的 SaaS 提供商。 然后说我们可以设置一个 Docker 镜像,它运行带有 ReactOS 来宾的 VirtualBox。 也许我们可以找到一个 SaaS 提供商来为我们运行那个 Docker 镜像?
https://github.com/pypa/python-packaging-user-guide/issues/267包含很多有趣的打包 Python 应用程序的链接。
一旦确定将 Linux 包上传到 GitHub(通过 PR #123),我们就会跳上macOS的
获得适用于 Windows 的 EXE 和适用于 macOS 的捆绑包之后的下一件好事可能是为 Linux构建一个 AppImage 。 这类似于 Mac 上的 .dmg 文件。 这将是所有 GNU/Linux 发行版的单一解决方案! :tada: :smiley:
AppImage 也有(有点)一个 AppStore,被称为AppImageHub 。 比较让你明白这真的是一件很酷的事情。 :+1:
听起来不错!
到目前为止,在 macOS 上构建应用程序包(使用 PyInstaller)还不能完全正常工作。 作为替代方案,我想,我们可以创建一个 Homebrew 公式。 我目前正在查看相关文档:
嗯,看来需要有 Mac 的人才能有效地开发公式。 虽然看起来并不难,但实际上。 :思维:
下面是与Python相关的公式(3):
依赖Python@3
(=3.7) 并通过 pip 安装 wxPython 可能就足够了(就像我们的测试一样)。
仅供参考,如果自动发布不起作用(它们目前可能不会起作用,因为api_key:
设置为只是一个示例值),以下是VSCodium 项目如何在 GitHub 上进行自动发布。 :+1:
Ram,您已经提到“Windows 安装程序”是当前的首要任务。 我同意。
让我们记下工会的当前状态。
我想,我已经准备好了一切。 现在,因为我既没有 Windows 计算机,也没有打算购买一台(顺便说一下,macOS 也是如此),唯一缺少的就是有人接管并将丢失的拼图放在适当的位置。 根据我的直觉,我们真的非常接近“任务完成”。
根据StackOverflow上Microsoft Visual Studio Installer Projects扩展创建必要的配置。
所以,你能接手吗? IIUC,需要做的是:
.vdproj
文件添加到该项目然后 AppVeyor 将检测该文件,构建安装程序并在构建工件页面提供它以供下载。
根据我的直觉,我们真的非常接近“任务完成”。
我不觉得如果我开始工作,它就会接近完成。 我什至不知道如何使用 Visual Studio Project,也不知道我们目前的计划是什么。 如果让我来接这个任务,我猜这需要几天的全职工作。
你为此付出了很多努力,所以告诉你这件事我感觉不太好,但我绝对不会自愿处理这个问题。 PythonTurtle 现在还不是我生活中的优先事项,我会花一个多小时来改进它,最重要的是。
通过从其他问题指出这个问题,我是否很烦人,说没有这个问题就没有任何价值? 我不会阻止你解决任何其他问题,我可能不会加入,因为在我看来这些努力是浪费,但我不会阻止你,如果你需要我进行代码审查或小事,我很乐意这样做。
对此另有想法。 您说“我既没有 Windows 计算机,也不打算购买一台”。 如果您反对执行您列出的项目是因为您在这张票上做得足够多,或者您不想花时间做与 Windows 相关的事情,那么是的,这是一个合理的反对意见。
如果问题是您不想花钱购买 Windows 许可证,那么也许可以解决。 一种想法是使用 ReactOS,并查看它是否运行 Visual Studio Project。 如果 ReactOS 不是一个选项,那么也许我可以为您获得 Windows 许可证/机器。 让我知道这是否有帮助。
让我知道这是否有帮助。
你认识一个对在 Windows 上编程_热心_的人吗? 对于 Python 来说,Windows 是一个凌乱的环境。 我不想为“Python + Windows”完美融合的虚假形象做出贡献,仅此而已。
有关构建 MSI 安装程序(WiX、 WiX.Py )的替代解决方案,请参阅https://github.com/PythonTurtle/PythonTurtle/issues/108#issuecomment -683420022。 我们可能会以这种方式与 GitHub Actions 结合取得成功。 有人想试一试吗?
有人想试一试吗?
我没有,所以我想我们会等到可能的志愿者到来。
任务清单...
我们收到了@judej对我发布的 Microsoft 开发人员社区的帮助请求的非常好的回答! :喜悦:
底线:我们没有 MSI 志愿者,但有两个更有趣的项目,一个构建安装程序,另一个构建Python ZIP 应用程序:
这可能是值得评估的两个不错的选择。 谢谢裘德! :100: :medal_military:
凉爽的。 我最近也听说了PyOxidizer 。 我仍然不能 100% 确定我理解了这个项目(讨论),但它有可能做我们想要的。
我将在周末用shiv
尝试这样做。 请尝试PyOxidizer
然后我们可以比较笔记。
对不起,我几天前开始了一份新工作,我没有时间做任何事情:(
PyOxidizer
对我来说听起来像是一个实验:一个运行在“Rust VM”上的 Python 应用程序,一个使用 Rust 创建的操作系统原生层。 我不确定这提供了什么好处。 我们运行的PyInstaller
设置不是很好吗? :3rd_place_medal:
shiv
是一种全新的方法(在我们的发布工件“组合”中是新的),提供给我们的观众可能会很有趣。 我觉得这个想法令人兴奋(尽管我敢打赌很少有人会使用它)。 :2nd_place_medal:
pynsist
听起来像我们正在寻找的 Microsoft Windows 安装程序。 这可能会提供 Windows 人似乎期望的用户体验: :one: 下载安装程序,:2: 运行它以安装并添加开始菜单条目,:3: 从开始菜单启动应用程序。 :1st_place_medal:
pynsist 的缺点是仅适用于 Windows。 我将尝试在 Mac 和 Linux 上推进 Shiv(来自 LinkedIn)。
最有用的评论
获得适用于 Windows 的 EXE 和适用于 macOS 的捆绑包之后的下一件好事可能是为 Linux构建一个 AppImage 。 这类似于 Mac 上的 .dmg 文件。 这将是所有 GNU/Linux 发行版的单一解决方案! :tada: :smiley:
AppImage 也有(有点)一个 AppStore,被称为AppImageHub 。 比较让你明白这真的是一件很酷的事情。 :+1: