【问题标题】:What are common strategies for updating python programs?更新python程序的常用策略是什么?
【发布时间】:2010-12-10 05:48:07
【问题描述】:

我有一个用 python 和 py2exe 制作的 Windows 程序。我想创建一个更新功能,以便可以轻松更新软件。

解决这个问题的常用方法是什么?

【问题讨论】:

  • 和其他系统一样;一旦你用 py2exe 来做这件事,它就变成了一个普遍的问题,而且它不再是 Python 的事实几乎没有什么特别之处。
  • 找到一个用于更新或修补 .exe(或二进制)文件的工具包——或者自己编写一个 Python 或其他语言(可能不是那么难)。

标签: python windows-7 py2exe


【解决方案1】:

如果您认为您的代码可能使他人受益,您可以将其放在 PyPI 上。然后拥有不同的版本只是更新你的包,或者告诉你的客户使用easy_install 来获取最新版本。不过,这不会推送更新。

您可以尝试 Esky,它是一个用于管理不同版本的自动更新框架,包括获取新版本和回滚部分更新。它可以在 PyPI 上找到。

也就是说,我没有使用过 Esky。如果您想推出自己的自动更新功能,您可能需要查看 Boxed Dice 以了解他们是如何解决此问题的。

【讨论】:

    【解决方案2】:

    当您使用 py2exe 打包应用程序时,结果通常是单个可执行文件(可能带有一些数据文件)。这是最简单的更新方法,只需建议用户每隔一段时间下载并安装一个新版本(如何与服务器检查是否存在此类新版本是一个不同的问题)。

    如果您想减少用户必须执行的下载大小,应用程序通常会求助于将自己分解为多个 DLL 并仅更新相关的 DLL。当你有一个 Python 应用程序时,你没有 DLL,但你有一个更简单的选择 - 你可以将应用程序的大部分逻辑保留在 .pyc 文件中的 exe 之外,并只更新其中的一些 .pyc 文件。

    现在,请注意,.pyc 文件很容易“反编译”成 Python(原始代码的某种模糊版本),但是使用 py2exe 制作的 exe 并不安全,因为 py2exe 是开源软件,并且无论如何都会在 exe 中打包所有相同的文件。

    最后,我的建议是不要打扰。您的应用程序可以有多大?借助当今的快速连接,让用户下载一个全新的版本比投入大量时间在您的程序中构建部分更新功能更容易。

    【讨论】:

    • 谢谢,代码的安全性不是什么大问题,我很可能会在 2.0 版之前将其开源。有什么好的方法可以与程序通信,以便我可以命令它做一个弹出对话框?
    • @Anteater7171:如果安全不是问题,那么只需将所有 Python 库打包到一个目录中(py2exe 可以选择 IIRC)。我不明白你的最后一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    相关资源
    最近更新 更多