我为pyload写了2-3个插件。 有时他们会改变,我让用户通过论坛了解新版本。
为了避免我想让我的脚本具有自动自我更新功能。 https://github.com/Gutz-Pilz/pyLoad-stuff/blob/master/FileBot.py
这样容易设置吗?
或者有人能指出我的方向?
提前致谢!
答案 0 :(得分:3)
有可能,有一些警告。但它很容易变得非常复杂。在你知道之前,你的自动更新"功能"将比原始代码更大!
首先,您需要一个始终包含最新版本的网址。由于您使用的是github,因此使用raw.githubusercontent
可能会很好。
让您的代码从该网址下载最新版本(例如,使用requests
),并将版本与当前代码中的版本进行比较。为此,我建议使用简单的整数版本号,这样您就不需要任何复杂的解析逻辑。
但是,您可能想要考虑每天只运行一次检查,或者每周运行一次。如果您每次运行文件时都这样做,服务器可能会受到重创!所以现在你必须保存一个文件,其中包含上次检查时的日期,然后读取该文件以查看是否该再次运行检查。此文件需要保存在您可以在代码可能运行的每个平台上访问的位置。这本身就是一个挑战。
如果它只是一个python文件,它作为运行它的用户安装,则更新相对容易。但是,如果原始作为root用户安装在全局Python目录中,并且您的脚本作为非特权用户运行,那将很困难。特别是如果它作为插件运行,并且无法要求用户提供(临时)root凭据来安装该文件。
如果新版本在标准库之外有更多依赖项,你打算做什么?
最后但并非最不重要的是,作为系统管理员,我并不喜欢自动更新软件。特别是对于关键系统infrstructure,我希望能够在更新之前估计的后果。