You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyScript导入sklearn依赖后页面长时间加载卡住如何解决

问题概述

使用PyScript进行网站开发,通过Live Server调试运行时,配置sklearn相关依赖后页面加载耗时极久,长时间无法完成加载。经测试该异常仅在引入sklearn相关依赖时触发,页面长期停留在如下加载提示状态,无响应:

Loading runtime...
Runtime created...
Initializing components...

所用PyScript代码如下:

<!DOCTYPE=html>
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<py-env>
      - numpy
      - pandas
      - sklearn.model_selection
      - sklearn.naive_bayes
      - sklearn.feature_extraction
</py-env>
<py-script>
      import numpy as np
      import pandas as pd
      from sklearn.model_selection import train_test_split
      from sklearn.naive_bayes import MultinomialNB
      from sklearn.feature_extraction.text import TfidfVectorizer
</py-script>
</body>
</html>
产生原因
  • 依赖声明格式错误:<py-env>的作用是声明需要安装的PyPI/conda顶层包,不支持直接填写sklearn的子模块路径,错误的包名会导致依赖解析逻辑持续重试、陷入死循环,无法完成依赖拉取流程。
  • 包体积过大:scikit-learn本身连带scipy等底层依赖的WASM版本总体积超过100MB,浏览器端需要先完成全量包下载、WASM环境初始化才能进入页面可用状态,正常网络环境下首次加载也需要数分钟,弱网下耗时会进一步增加。
  • 版本兼容缺陷:当前使用的是PyScript最早的Alpha版本,对scikit-learn这类包含大量C扩展的科学计算包兼容度较差,依赖解析、内存加载环节存在已知的卡死bug。
可行解决方案
  • 修正依赖配置:<py-env>中只声明顶层包名,不要填写子模块路径,同时注意scikit-learn的包名不是sklearn,修正后的依赖配置如下:
- numpy
- pandas
- scikit-learn

注意:子模块导入逻辑只需要写在<py-script>的Python代码中即可,不需要在环境配置阶段声明。

  • 升级PyScript到正式稳定版本:替换页面中引用的Alpha版本资源,正式版优化了科学计算包的依赖解析逻辑和加载速度,修复了旧版本加载sklearn时的卡死问题。
  • 利用浏览器缓存减少重复加载:首次成功加载所有依赖后,浏览器会将包文件缓存到本地,后续调试打开页面时不需要重复拉取,加载耗时可以压缩到数秒;调试阶段不要频繁清除浏览器缓存,避免重复触发全量下载。
  • 轻量化替代减少加载体积:如果仅用到数据集拆分、朴素贝叶斯分类、TF-IDF特征提取这几个功能,可以改用纯Python实现的轻量化工具替代完整scikit-learn包,从根源上降低需要加载的资源体积。
  • 自定义加载提示:修改默认加载状态的提示文案,明确告知用户当前正在加载计算依赖,避免误判为页面崩溃。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:24:22