Python 检查存储库和更新
我正在使用(非常)古老的Python库PyGame制作一个游戏。但这不是我要问的 我如何制作一个代码,用最新版本检查服务器中的存储库,检查版本是否更新或相同,如果更新则提示用户下载(或拒绝)游戏更新,因为它将在多个版本中开发,并允许玩家在我们进行更改时逐步更新Python 检查存储库和更新,python,Python,我正在使用(非常)古老的Python库PyGame制作一个游戏。但这不是我要问的 我如何制作一个代码,用最新版本检查服务器中的存储库,检查版本是否更新或相同,如果更新则提示用户下载(或拒绝)游戏更新,因为它将在多个版本中开发,并允许玩家在我们进行更改时逐步更新 就像Minecraft一样,一旦更新出来,它会提示您进行更新。。。但是在Python中,有三件事需要做: 您将在其中存储有关更新和版本的所有信息的服务器 它可以是一个web服务器(对于Python,请参见flask,web.py,dja
就像Minecraft一样,一旦更新出来,它会提示您进行更新。。。但是在Python中,有三件事需要做:
- 它可以是一个web服务器(对于Python,请参见
,flask
,web.py
,django
,等等,或者PHP或其他什么),它可以有一个页面pylons
- 它将以当前版本作为输入(
/GET
请求),并输出可用的更新(以可解析的格式,POST
最好是XML或纯文本)JSON
- 这些可以从数据库中获取(请参见
,MySQL
,或与您选择的web服务器一起工作的任何ORM,postgresql
)sqlalchemy
- 或者通过检查服务器上可用文件的名称(如果文件将托管在同一web服务器上)(名称将具有模式
,您将使用XXX-r24-20121224.tar.gz
或其他内容检查文件列表)glob
请求
或urllib2
- web服务器应该为您提供更新文件所在位置的链接
- 您必须从那里下载它(带有
或请求
)urllib2
- 解压缩它(使用
或zipfile
)并用它替换实际文件tarfile
- 现在,这完全取决于文件的布局:
- 如果您正在分发源代码,您可以做的是将其全部构建在一个包中,然后替换整个包
包和Python实际上解释了这一点,它们为您提供了一个选项,只将Python文件放在zip文件中,而Python为您提供了一个选项,可以将所述zip文件添加到zipfile
并直接从那里导入PYTHONPATH
- 如果您使用
或其他任何工具编译它,那将是一个不同的问题:您可能只能更新一个zip文件,或者替换实际的DLL和其他东西,这可能会造成很大的混乱py2exe
- 如果它是一个deb包或类似的包,您可能希望使用它来更新,并要求用户这样做或做其他事情
现在我将给出我自己的(有偏见的)观点:如果你已经有一个网站在运行,用它来为这样的事情添加一个页面。否则,我会推荐一个免费的主机,这将允许你建立一个网站使用烧瓶。我建议这样做,因为它很容易在短时间内运行,而且它还允许您使用伟大的ORM sqlAlchemy。此外,我只需要告诉用户有一个新版本,让他们知道在哪里可以得到它。除非您仅以一种标准方式将其分发到各地。为此,您需要三件事:
- 它可以是一个web服务器(对于Python,请参见
,flask
,web.py
,django
,等等,或者PHP或其他什么),它可以有一个页面pylons
- 它将以当前版本作为输入(
/GET
请求),并输出可用的更新(以可解析的格式,POST
最好是XML或纯文本)JSON
- 这些可以从数据库中获取(请参见
,MySQL
,或与您选择的web服务器一起工作的任何ORM,postgresql
)sqlalchemy
- 或者通过检查服务器上可用文件的名称(如果文件将托管在同一web服务器上)(名称将具有模式
,您将使用XXX-r24-20121224.tar.gz
或其他内容检查文件列表)glob
请求
或urllib2
- web服务器应该为您提供更新文件所在位置的链接
- 您必须从那里下载它(带有
或请求
)urllib2
- 解压缩它(使用
或zipfile
)并用它替换实际文件tarfile
- 现在,这完全取决于文件的布局:
- 如果您正在分发源代码,您可以做的是将其全部构建在一个包中,然后替换整个包
包和Python实际上解释了这一点,它们为您提供了一个选项,只将Python文件放在zip文件中,而Python为您提供了一个选项,可以将所述zip文件添加到zipfile
并直接从那里导入PYTHONPATH
- 如果您使用
或其他任何工具编译它,那将是一个不同的问题:您可能只能更新一个zip文件,或者替换实际的DLL和其他东西,这可能会造成很大的混乱py2exe
- 如果它是一个deb包或类似的包,您可能希望使用它来更新,并要求用户这样做或做其他事情