确保 chromium 浏览器已安装
()
| 155 | |
| 156 | |
| 157 | def _ensure_browser_installed() -> bool: |
| 158 | """确保 chromium 浏览器已安装""" |
| 159 | try: |
| 160 | detect_script = ( |
| 161 | "from playwright.sync_api import sync_playwright\n" |
| 162 | "with sync_playwright() as p:\n" |
| 163 | " print(p.chromium.executable_path or '')\n" |
| 164 | ) |
| 165 | env = os.environ.copy() |
| 166 | env.setdefault("PLAYWRIGHT_BROWSERS_PATH", os.environ.get("PLAYWRIGHT_BROWSERS_PATH", "0") or "0") |
| 167 | result = subprocess.run( |
| 168 | [sys.executable, "-c", detect_script], |
| 169 | capture_output=True, |
| 170 | text=True, |
| 171 | timeout=60, |
| 172 | env=env, |
| 173 | ) |
| 174 | browser_path = (result.stdout or "").strip().splitlines() |
| 175 | browser_path = browser_path[-1].strip() if browser_path else "" |
| 176 | if result.returncode == 0 and browser_path and os.path.exists(browser_path): |
| 177 | debug_logger.log_info(f"[BrowserCaptcha] chromium 浏览器已安装: {browser_path}") |
| 178 | finish_runtime_prepare("browser", "检测到 chromium 浏览器已安装,正在准备实例...") |
| 179 | return True |
| 180 | except Exception as e: |
| 181 | debug_logger.log_info(f"[BrowserCaptcha] 检测浏览器时出错: {e}") |
| 182 | |
| 183 | debug_logger.log_info("[BrowserCaptcha] chromium 浏览器未安装,开始自动安装...") |
| 184 | progress_runtime_prepare("browser", "[BrowserCaptcha] chromium 浏览器未安装,开始自动安装...") |
| 185 | print("[BrowserCaptcha] chromium 浏览器未安装,开始自动安装...") |
| 186 | |
| 187 | # 先尝试官方源 |
| 188 | if _run_playwright_install(use_mirror=False): |
| 189 | return True |
| 190 | |
| 191 | # 官方源失败,尝试国内镜像 |
| 192 | debug_logger.log_info("[BrowserCaptcha] 官方源安装失败,尝试国内镜像...") |
| 193 | progress_runtime_prepare("browser", "[BrowserCaptcha] 官方源安装失败,尝试国内镜像...") |
| 194 | print("[BrowserCaptcha] 官方源安装失败,尝试国内镜像...") |
| 195 | if _run_playwright_install(use_mirror=True): |
| 196 | return True |
| 197 | |
| 198 | debug_logger.log_error("[BrowserCaptcha] ❌ chromium 浏览器自动安装失败,请手动安装: python -m playwright install chromium") |
| 199 | fail_runtime_prepare("browser", "[BrowserCaptcha] ❌ chromium 浏览器自动安装失败,请手动安装: python -m playwright install chromium") |
| 200 | print("[BrowserCaptcha] ❌ chromium 浏览器自动安装失败,请手动安装: python -m playwright install chromium") |
| 201 | return False |
| 202 | |
| 203 | |
| 204 | # 尝试导入 playwright |
no test coverage detected