如何在Flask + Brython应用中正确导入自定义Python模块
问题根因
Brython 运行在客户端浏览器环境,导入自定义 Python 模块时,会通过 HTTP 请求拉取对应 .py 文件的内容。你将 test.py 放在 Flask 的 templates 目录下,该目录是 Flask 的模板渲染专用目录,默认不会对外暴露为静态资源路径,因此 Brython 无法请求到 test.py 文件,导入失败。你之前在服务端根目录加 __init__.py 的操作是服务端 Python 的导入规则,和客户端 Brython 的导入逻辑完全无关,所以不生效。
解决方案
步骤1:调整目录结构
将 Brython 需要导入的自定义模块放到 Flask 默认的静态资源目录 static 下,推荐单独建一个子目录存放,结构如下:
root ├── app.py ├── templates │ └── index.html └── static └── py_modules # 专门存放 Brython 端导入的 Python 模块 ├── __init__.py # 用于 Brython 识别为包目录,空文件即可 └── test.py
把你原来的 test.py 移动到 static/py_modules 目录下。
步骤2:修改 index.html 配置
初始化 Brython 时添加 pythonpath 参数,告诉 Brython 自定义模块的拉取路径,仅需修改一处代码:
把 <body onload="brython()"> 改为:
<body onload="brython({pythonpath: ['/static/py_modules']})">
原有 Brython 脚本的导入逻辑不需要修改,保持 import test 即可。
可选验证
启动 Flask 服务后,直接在浏览器地址栏输入 http://127.0.0.1:5000/static/py_modules/test.py,如果能正常显示 test.py 的代码内容,说明路径配置正确,此时刷新页面即可看到 Brython 正常导入模块输出结果。
内容的提问来源于stack exchange,提问作者relyt
相关产品推荐
相关产品推荐

