如何在脚本中以编程方式检查软件包的最新版本,并返回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
以下代码要求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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句