欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > python环境检测

python环境检测

2025/5/6 22:28:22 来源:https://blog.csdn.net/2301_76444133/article/details/146001110  浏览:    关键词:python环境检测

基于python代码实现的python环境检测:

包含电脑系统

python版本

依赖包检查

环境变量检查

当然啦,用户可以基于自己的需求增加多种项目检查,如自定义多种依赖包。

import sys
import platform
import os
from packaging.version import parse  # 替换弃用的pkg_resourcestry:from colorama import init, Fore, StyleHAS_COLORAMA = True
except ImportError:HAS_COLORAMA = False# 初始化颜色输出
if HAS_COLORAMA:init(autoreset=True)# 配置检查项
REQUIRED_PYTHON_VERSION = (3, 6)
REQUIRED_PACKAGES = {"numpy": "1.18.0","pandas": "1.0.0","requests": "2.24.0"
}
REQUIRED_ENV_VARS = ["HOME", "PATH"]class EnvironmentChecker:def __init__(self):self.report = {"python_version": {},"operating_system": {},"packages": {},"environment_vars": {}}def check_python_version(self):"""检查Python版本"""result = {"required": ".".join(map(str, REQUIRED_PYTHON_VERSION)),"installed": platform.python_version(),"status": "OK"}if sys.version_info < REQUIRED_PYTHON_VERSION:result["status"] = "ERROR"elif sys.version_info[0] != REQUIRED_PYTHON_VERSION[0]:result["status"] = "ERROR"else:result["status"] = "OK"self.report["python_version"] = resultreturn resultdef check_operating_system(self):"""检查操作系统"""os_info = {"system": platform.system(),"release": platform.release(),"version": platform.version(),"status": "OK"  # 操作系统检查通常不会失败,但保留状态字段}self.report["operating_system"] = os_inforeturn os_infodef check_packages(self):"""检查安装的包"""for pkg, req_version in REQUIRED_PACKAGES.items():try:__import__(pkg)installed_version = sys.modules[pkg].__version__status = "OK" if parse(installed_version) >= parse(req_version) else "WARNING"except ImportError:installed_version = "Not installed"status = "ERROR"except AttributeError:installed_version = "Unknown version"status = "WARNING"self.report["packages"][pkg] = {"required": req_version,"installed": installed_version,"status": status}return self.report["packages"]def check_environment_vars(self):"""检查环境变量"""for var in REQUIRED_ENV_VARS:exists = var in os.environself.report["environment_vars"][var] = {"exists": exists,"status": "OK" if exists else "WARNING"}return self.report["environment_vars"]def generate_report(self, save_to_file=False):"""生成检查报告"""self.check_python_version()self.check_operating_system()self.check_packages()self.check_environment_vars()# 控制台输出self._print_colored("Python版本检查:", self.report["python_version"])self._print_colored("\n操作系统信息:", self.report["operating_system"])print("\n依赖包检查:")for pkg, info in self.report["packages"].items():self._print_colored(f"- {pkg}", info)print("\n环境变量检查:")for var, info in self.report["environment_vars"].items():self._print_colored(f"- {var}", info)# 保存到文件if save_to_file:with open("environment_report.txt", "w") as f:import jsonjson.dump(self.report, f, indent=2)def _print_colored(self, title, data):"""带颜色输出"""if "status" in data:status = data["status"]color = Fore.GREENif status == "WARNING":color = Fore.YELLOWelif status == "ERROR":color = Fore.REDdetails = []for k, v in data.items():if k != "status":details.append(f"{k}={v}")if HAS_COLORAMA:print(f"{color}{title.ljust(20)}{Style.RESET_ALL} {', '.join(details)}")else:print(f"{title.ljust(20)} [{status}] {', '.join(details)}")else:details = [f"{k}={v}" for k, v in data.items()]print(f"{title.ljust(20)} {', '.join(details)}")if __name__ == "__main__":checker = EnvironmentChecker()print("=" * 60)print("Python环境检查报告".center(60))print("=" * 60)checker.generate_report(save_to_file=True)print("\n" + "=" * 60)# 修正后的错误检查逻辑has_errors = False# 检查Python版本状态if checker.report["python_version"]["status"] == "ERROR":has_errors = True# 检查所有包的安装状态for pkg_info in checker.report["packages"].values():if pkg_info["status"] == "ERROR":has_errors = True# 检查环境变量状态for env_info in checker.report["environment_vars"].values():if env_info["status"] == "ERROR":  # 注意这里原代码中没有ERROR状态,只有WARNINGhas_errors = Trueif has_errors:sys.exit(1)else:sys.exit(0)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词