Python 检查存储库和更新

Python 检查存储库和更新,python,Python,我正在使用(非常)古老的Python库PyGame制作一个游戏。但这不是我要问的 我如何制作一个代码,用最新版本检查服务器中的存储库,检查版本是否更新或相同,如果更新则提示用户下载(或拒绝)游戏更新,因为它将在多个版本中开发,并允许玩家在我们进行更改时逐步更新 就像Minecraft一样,一旦更新出来,它会提示您进行更新。。。但是在Python中,有三件事需要做: 您将在其中存储有关更新和版本的所有信息的服务器 它可以是一个web服务器(对于Python,请参见flask,web.py,dja

我正在使用(非常)古老的Python库PyGame制作一个游戏。但这不是我要问的

我如何制作一个代码,用最新版本检查服务器中的存储库,检查版本是否更新或相同,如果更新则提示用户下载(或拒绝)游戏更新,因为它将在多个版本中开发,并允许玩家在我们进行更改时逐步更新


就像Minecraft一样,一旦更新出来,它会提示您进行更新。。。但是在Python中,有三件事需要做:

  • 您将在其中存储有关更新和版本的所有信息的服务器

    • 它可以是一个web服务器(对于Python,请参见
      flask
      web.py
      django
      pylons
      ,等等,或者PHP或其他什么),它可以有一个页面
    • 它将以当前版本作为输入(
      GET
      /
      POST
      请求),并输出可用的更新(以可解析的格式,
      JSON
      最好是XML或纯文本)
    • 这些可以从数据库中获取(请参见
      MySQL
      postgresql
      ,或与您选择的web服务器一起工作的任何ORM,
      sqlalchemy
    • 或者通过检查服务器上可用文件的名称(如果文件将托管在同一web服务器上)(名称将具有模式
      XXX-r24-20121224.tar.gz
      ,您将使用
      glob
      或其他内容检查文件列表)
  • 这段代码将在每次启动游戏时查询服务器,以检查web服务器是否有更新。例如,您可以使用
    请求
    urllib2

  • 一段代码,将下载和更新您的实际游戏

    • web服务器应该为您提供更新文件所在位置的链接
    • 您必须从那里下载它(带有
      请求
      urllib2
    • 解压缩它(使用
      zipfile
      tarfile
      )并用它替换实际文件
    • 现在,这完全取决于文件的布局:
      • 如果您正在分发源代码,您可以做的是将其全部构建在一个包中,然后替换整个包
      • zipfile
        包和Python实际上解释了这一点,它们为您提供了一个选项,只将Python文件放在zip文件中,而Python为您提供了一个选项,可以将所述zip文件添加到
        PYTHONPATH
        并直接从那里导入
      • 如果您使用
        py2exe
        或其他任何工具编译它,那将是一个不同的问题:您可能只能更新一个zip文件,或者替换实际的DLL和其他东西,这可能会造成很大的混乱
      • 如果它是一个deb包或类似的包,您可能希望使用它来更新,并要求用户这样做或做其他事情
  • 我希望这能有所帮助,即使它非常抽象。必须这样做:)


    现在我将给出我自己的(有偏见的)观点:如果你已经有一个网站在运行,用它来为这样的事情添加一个页面。否则,我会推荐一个免费的主机,这将允许你建立一个网站使用烧瓶。我建议这样做,因为它很容易在短时间内运行,而且它还允许您使用伟大的ORM sqlAlchemy。此外,我只需要告诉用户有一个新版本,让他们知道在哪里可以得到它。除非您仅以一种标准方式将其分发到各地。

    为此,您需要三件事:

  • 您将在其中存储有关更新和版本的所有信息的服务器

    • 它可以是一个web服务器(对于Python,请参见
      flask
      web.py
      django
      pylons
      ,等等,或者PHP或其他什么),它可以有一个页面
    • 它将以当前版本作为输入(
      GET
      /
      POST
      请求),并输出可用的更新(以可解析的格式,
      JSON
      最好是XML或纯文本)
    • 这些可以从数据库中获取(请参见
      MySQL
      postgresql
      ,或与您选择的web服务器一起工作的任何ORM,
      sqlalchemy
    • 或者通过检查服务器上可用文件的名称(如果文件将托管在同一web服务器上)(名称将具有模式
      XXX-r24-20121224.tar.gz
      ,您将使用
      glob
      或其他内容检查文件列表)
  • 这段代码将在每次启动游戏时查询服务器,以检查web服务器是否有更新。例如,您可以使用
    请求
    urllib2

  • 一段代码,将下载和更新您的实际游戏

    • web服务器应该为您提供更新文件所在位置的链接
    • 您必须从那里下载它(带有
      请求
      urllib2
    • 解压缩它(使用
      zipfile
      tarfile
      )并用它替换实际文件
    • 现在,这完全取决于文件的布局:
      • 如果您正在分发源代码,您可以做的是将其全部构建在一个包中,然后替换整个包
      • zipfile
        包和Python实际上解释了这一点,它们为您提供了一个选项,只将Python文件放在zip文件中,而Python为您提供了一个选项,可以将所述zip文件添加到
        PYTHONPATH
        并直接从那里导入
      • 如果您使用
        py2exe
        或其他任何工具编译它,那将是一个不同的问题:您可能只能更新一个zip文件,或者替换实际的DLL和其他东西,这可能会造成很大的混乱
      • 如果它是一个deb包或类似的包,您可能希望使用它来更新,并要求用户这样做或做其他事情