我用Python2.7为我的办公室写了一个程序。使用带有--onefile标志的PyInstaller,我将其编译成单个EXE文件以分发给我的同事。我现在想弄清楚的是如何自动提供更新,但仍将程序保持为单个文件。我目前的方法是让程序提醒用户有新版本并给出从哪里获取更新文件的说明。这可行,但我想找到一些无需用户参与的更新方法。我知道Esky,它可以创建自动更新的Python程序,但据我所知,它要求程序以多个文件的形式存在。关于如何制作可以自动更新的独立单文件EXEpython程序有什么建议吗? 最佳答案 您可以将新的可执行文件下载到临时
我的问题本质上是“我应该如何构建卡住的、已部署的基于Python的Windows应用程序的文件和文件夹的结构。”为了了解我的情况,这里有一些背景:我正在为我的工作场所构建一个使用Python2.7的桌面应用程序。它是基于PyQt构建的基于GUI的应用程序。我正在使用Esky构建应用程序这是一个跨平台的卡住和更新框架。Esky基本上包装/调用py2exe、py2app、bb_freeze或您已安装的适用于当前平台的任何工具。Esky创建了一个压缩包,如下所示:prog.exe-eskybootstrappingexecutableappdata/-containerforallthees
我们即将开始使用Esky将更新部署到我们的应用程序。在Windows7上,Esky似乎无法获得安装更新所需的升级权限。我已将其缩小到这个简单的脚本。它要求升级权限,但会卡住或崩溃并显示下面的堆栈跟踪。脚本importeskyimportesky.sudoclassMyProgram(object):@esky.sudo.allow_from_sudo()defdo_stuff(self):passapp=MyProgram()sapp=esky.sudo.SudoProxy(app)sapp.start()sapp.do_stuff()sapp.drop_root()堆栈跟踪$pyth