gpt4 book ai didi

python - 如何以编程方式检查python包是否是最新版本?

转载 作者:行者123 更新时间:2023-12-02 13:02:09 25 4
gpt4 key购买 nike

如何在脚本中以编程方式检查软件包是否为最新版本并返回 true 或 false?

我可以使用这样的脚本进行检查:

package='gekko'
import pip
if hasattr(pip, 'main'):
from pip import main as pipmain
else:
from pip._internal import main as pipmain
pipmain(['search','gekko'])

或使用命令行:

(base) C:\User>pip search gekko
gekko (0.2.3) - Machine learning and optimization for dynamic systems
INSTALLED: 0.2.3 (latest)

但是如何以编程方式检查并返回 true 或 false?

最佳答案

快速版本(仅检查包)

下面的代码调用具有不可用版本的包,例如pip install package_name==random。该调用返回所有可用版本。程序读取最新版本。

程序然后运行pip show package_name并获取包的当前版本。

如果找到匹配,则返回 True,否则返回 False。

这是一个可靠的选项,因为它基于pip

import subprocess
import sys
def check(name):
latest_version = str(subprocess.run([sys.executable, '-m', 'pip', 'install', '{}==random'.format(name)], capture_output=True, text=True))
latest_version = latest_version[latest_version.find('(from versions:')+15:]
latest_version = latest_version[:latest_version.find(')')]
latest_version = latest_version.replace(' ','').split(',')[-1]

current_version = str(subprocess.run([sys.executable, '-m', 'pip', 'show', '{}'.format(name)], capture_output=True, text=True))
current_version = current_version[current_version.find('Version:')+8:]
current_version = current_version[:current_version.find('\\n')].replace(' ','')

if latest_version == current_version:
return True
else:
return False

编辑 2021:以下代码不再适用于新版本的 pip

以下代码调用pip list --outdated:

import subprocess
import sys

def check(name):
reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'list','--outdated'])
outdated_packages = [r.decode().split('==')[0] for r in reqs.split()]
return name in outdated_packages

关于python - 如何以编程方式检查python包是否是最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58648739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com