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

如何在PyScript中导入自定义Python包/模块?

解决PyScript导入自定义包的ModuleNotFoundError问题

1. 先确认包结构合规性

自定义包必须包含__init__.py文件(空文件也可以),PyScript依赖这个文件识别目录为合法Python包。你的文件夹结构应该是这样:

docs/
├── package/
│   ├── __init__.py
│   └── example.py
└── index.md  # 你的文档页面

如果package目录里没有__init__.py,直接创建一个空文件即可。

2. 手动配置PyScript的模块路径

浏览器环境不会自动识别本地包路径,需要手动指定,两种方式任选其一:

方式一:通过<py-config>配置

在页面的PyScript配置块中,添加paths指向包所在目录:

<py-config>
    packages = ["numpy", "matplotlib"]
    paths = ["./package"]
</py-config>

注意路径是相对当前HTML页面的位置,要和mkdocs构建后的文件结构对应上。

方式二:在代码中动态添加路径

在PyScript代码开头,把包目录加入Python路径:

import sys
sys.path.append('./package')
from package.example import myplot

同样要保证相对路径的正确性,确保浏览器能访问到package下的文件。

3. 检查mkdocs的部署配置

确认mkdocs.yml里没有排除package目录的规则,比如:

# mkdocs.yml示例,确保exclude不包含package
exclude:
  - venv/
  - .git/

mkdocs默认会把docs下的所有文件复制到构建站点,只要没被排除就会正常部署。

4. 强制清除浏览器缓存

浏览器可能缓存了旧的文件结构,按Ctrl+Shift+R(Chrome)或Cmd+Shift+R(Safari/Firefox)强制刷新页面,再测试导入效果。

验证用示例代码

假设package/example.py内容如下:

import numpy as np
import matplotlib.pyplot as plt

def myplot():
    x = np.linspace(0, 2*np.pi, 100)
    y = np.sin(x)
    plt.plot(x, y)
    plt.show()

mkdocs页面中的PyScript代码块:

<py-config>
    packages = ["numpy", "matplotlib"]
    paths = ["./package"]
</py-config>

<py-script>
from package.example import myplot
myplot()
</py-script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:35:15