我想在python包中包含某种自我更新机制,我不想在脚本运行之前调用pip update,因为它非常慢,我正在寻找一种智能机制.
每次使用它都可以进行HTTP调用,可能是PyPi,如果它会检测到新版本,它会在STDERR上输出警告.
显然,作为此过程的一部分,我还想缓存上次调用的结果,因此库不会每天多次检查更新,比如说.
有人这样的东西已经实现了吗?您是否有一个示例可用于在不同的执行之间缓存来自HTTP调用的结果,因此它不会强加显着的延迟?
要显示过时的软件包,您可以简单地运行pip list -o,但这本身不涉及任何缓存.
虽然简单地添加pip list -o > outdated.txt到cronjob 是微不足道的,所以它每天自动更新:)
以下是一些pip用作库的示例代码:
def get_outdated():
    import pip
    list_command = pip.commands.list.ListCommand()
    options, args = list_command.parse_args([])
    packages = pip.utils.get_installed_distributions()
    return list_command.get_outdated(packages, options)
print(get_outdated())
Run Code Online (Sandbox Code Playgroud)
        我写了一个库outdated来解决这个问题。使用它的最快方法是在包根目录的某个位置插入这样的代码:
from outdated import warn_if_outdated
warn_if_outdated('my-package-name', '1.2.3')
Run Code Online (Sandbox Code Playgroud)
这将根据请求在 stderr 上输出警告,将 HTTP 调用缓存 24 小时等等。详细信息可以在上面的链接中找到。
pip list -o它也比没有缓存要快得多。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           964 次  |  
        
|   最近记录:  |