Versión rápida (solo verificando el paquete)
El siguiente código llama al paquete con una versión no disponible como pip install package_name==random
. La llamada devuelve todas las versiones disponibles. El programa lee la última versión.
El programa se ejecuta pip show package_name
y obtiene la versión actual del paquete.
Si encuentra una coincidencia, devuelve Verdadero, de lo contrario, Falso.
Esta es una opción confiable dado que está en pie 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
El siguiente código requiere 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