Python 来自 github 的自动更新程序
Python auto updater from github
我想知道你们中是否有人为 python 应用程序实现了自动更新功能。我的想法是从 github URL 下载前 100-200 个字节(使用请求?),包含版本标签。例如
#!/usr/bin/env python
#######################
__author__ = '<a href="mailto:xxxx@gmail.com">xxx</a>'
__program__ = 'theprogram'
__package__ = ''
__description__ = '''This program does things'''
__version__ = '0.0.0'
...
因此,如果版本标签大于本地模块中的版本标签,更新程序将下载整个文件并替换它,然后(无论哪种方式)运行它。
最好的方法是什么?
谢谢!
您应该考虑使用 virtualenv 或 conda 来管理包中使用的依赖项。两者都允许您创建隔离环境以安装特定版本的包以及从预定义的依赖项列表创建环境。 Conda 也有像 pip 这样的包管理器的好处。如果您不在此需求文件中指定版本,它将安装最新版本。然后你可以只写一个 bash 脚本来自动化为你的用例执行此操作所需的几个命令行。
尝试阅读 python 环境:
http://conda.pydata.org/docs/using/envs.html
https://virtualenv.pypa.io/en/latest/
您可以以编程方式使用 pip 在 cron 中为您的模块安排更新,这样您就不需要请求版本,因为 pip 只会在必要时更新。
pip install --upgrade yourpackage
或
pip install --upgrade git+https://github.com/youracc/yourepo.git
此外,正如@riotburn 指出的那样,您应该使用 virtualenv 来隔离您的环境,并且如有必要,还可以回滚到之前的环境。在最后一种情况下,您可能会发现此 virtualenv wrapper 非常有用。
我想知道你们中是否有人为 python 应用程序实现了自动更新功能。我的想法是从 github URL 下载前 100-200 个字节(使用请求?),包含版本标签。例如
#!/usr/bin/env python
#######################
__author__ = '<a href="mailto:xxxx@gmail.com">xxx</a>'
__program__ = 'theprogram'
__package__ = ''
__description__ = '''This program does things'''
__version__ = '0.0.0'
...
因此,如果版本标签大于本地模块中的版本标签,更新程序将下载整个文件并替换它,然后(无论哪种方式)运行它。
最好的方法是什么?
谢谢!
您应该考虑使用 virtualenv 或 conda 来管理包中使用的依赖项。两者都允许您创建隔离环境以安装特定版本的包以及从预定义的依赖项列表创建环境。 Conda 也有像 pip 这样的包管理器的好处。如果您不在此需求文件中指定版本,它将安装最新版本。然后你可以只写一个 bash 脚本来自动化为你的用例执行此操作所需的几个命令行。
尝试阅读 python 环境:
http://conda.pydata.org/docs/using/envs.html
https://virtualenv.pypa.io/en/latest/
您可以以编程方式使用 pip 在 cron 中为您的模块安排更新,这样您就不需要请求版本,因为 pip 只会在必要时更新。
pip install --upgrade yourpackage
或
pip install --upgrade git+https://github.com/youracc/yourepo.git
此外,正如@riotburn 指出的那样,您应该使用 virtualenv 来隔离您的环境,并且如有必要,还可以回滚到之前的环境。在最后一种情况下,您可能会发现此 virtualenv wrapper 非常有用。