如何在Brython中加载本地PersistanceUtils模块?
Brython无法加载根目录Python模块的解决方法
问题核心
你的Flask应用没有暴露根目录下的PersistanceUtils.py供前端访问,导致Brython请求该文件时返回404;同时Flask默认不会主动提供非静态目录下的文件访问权限。
具体解决方法
方法一:移至静态目录并配置Brython路径
- 在项目的
static目录下新建python文件夹,把PersistanceUtils.py移入该文件夹。 - 修改
<body>标签的onload属性,给Brython添加模块搜索路径:<body onload="brython({paths: {'': '/static/python'}})"> - 保持原Python导入语句不变即可。
- 在项目的
方法二:给Flask添加路由(仅开发环境用)
在Flask主文件中添加以下路由代码,允许前端访问根目录下的Python模块:from flask import send_from_directory import os @app.route('/<path:filename>') def serve_module(filename): if filename.endswith('.py'): return send_from_directory(os.getcwd(), filename)注意:此方法会暴露所有根目录下的Python文件,存在安全隐患,仅限开发调试使用。
方法三:直接嵌入模块代码
如果PersistanceUtils.py代码量不大,可以直接把模块的全部代码粘贴到HTML的<script type="text/python">标签中,放在原导入语句之前:<script type="text/python"> # 粘贴PersistanceUtils.py的所有代码 def get_plot_data2(unique_key): # 原模块代码逻辑 ... </script> <script type="text/python"> from PersistanceUtils import * energy_list, time_list = PersistanceUtils.get_plot_data2("{{unique_key}}") </script>
内容的提问来源于stack exchange,提问作者user366312
相关产品推荐
相关产品推荐

