首页 > 解决方案 > 如何检查所有包是否满足版本要求?

问题描述

在 Python 解释器中运行脚本时,我想检查是否使用以下版本:

absl-py==0.1.10
agate==1.6.0
agate-dbf==0.2.0
agate-excel==0.2.1
agate-sql==0.5.2
appnope==0.1.0

例如,我可以这样做:

if absl-py.__version__ != "0.1.10":
    logging.error("update to version == 0.1.10")
    sys.exit() #

并重复所有其他包。有没有办法遍历所有指定的包并在不满足条件时引发和出错?

标签: pythonrequirements

解决方案


您可以使用以下代码检查包是否存在(确保先创建requirements.txt):

with open("requirements.txt") as f:
    packages = f.read().split("\n")
    for package in packages:
        package_name, package_version = package.split("==")
        package_name = "_".join(package_name.split("-"))
        exec(f"""\
try:
    import {package_name}
except ImportError:
    print("{package_name} doesn't exist") 
else:
    if not {package_name}.__version__== '{package_version}': 
        print(f"{package_name} is not up to date")""")
        


推荐阅读