python环境检测
- IT业界
- 2025-09-15 09:45:01

基于python代码实现的python环境检测:
包含电脑系统
python版本
依赖包检查
环境变量检查
当然啦,用户可以基于自己的需求增加多种项目检查,如自定义多种依赖包。
import sys import platform import os from packaging.version import parse # 替换弃用的pkg_resources try: from colorama import init, Fore, Style HAS_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"] = result return result def check_operating_system(self): """检查操作系统""" os_info = { "system": platform.system(), "release": platform.release(), "version": platform.version(), "status": "OK" # 操作系统检查通常不会失败,但保留状态字段 } self.report["operating_system"] = os_info return os_info def 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.environ self.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 json json.dump(self.report, f, indent=2) def _print_colored(self, title, data): """带颜色输出""" if "status" in data: status = data["status"] color = Fore.GREEN if status == "WARNING": color = Fore.YELLOW elif status == "ERROR": color = Fore.RED details = [] 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状态,只有WARNING has_errors = True if has_errors: sys.exit(1) else: sys.exit(0)python环境检测由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python环境检测”
 
               
               
               
               
               
               
               
               
   
   
   
   
   
   
   
   
   
   
  