Streamlit引入外部自定义函数报错:ModuleNotFoundError: No module named ‘XXX‘ 解决方法

ModuleNotFoundError

在使用Python的Streamlit库进行开发时,如果你有在代码中引入其它.py文件中自定义函数的需求,代码编写不完善就会导致Streamlit找不到你的自定义函数所在的模块,引发报错。

报错界面

在这里插入图片描述
其中,sql_controller为自定义模块,我需要使用里面自定义的query函数,Streamlit找不到相关模块。
此时,sql_controller路径为“工程目录/dataflow/sql_controller.py”,Streamlit启动文件路径为“工程目录/font/sql_controller.py”。
Streamlit启动文件中的代码为:from dataflow.business import query_file_score

解决方案(任选其一)

  1. 模块文件与Streamlit在同一目录下
  2. 规范编写代码 :dataflow文件夹下所有python代码文件之间在相互引用文件夹内部自定义函数代码时规范格式为:
    from dataflow.sql_controller import XXX,不要使用from sql_controller import XXX

附Streamlit启动脚本

start.py

import os

path = os.getcwd()  # 获取绝对路径
path = path.replace("/", "\\")  # 修改路径为命令行可正确识别的路径,replace要用双引号,否则会报错
os.system(f"cd {path} && streamlit run ./font/main.py")

代码注解:通过获取该Python文件所在路径,调用Windows CMD 执行Streamlit启动文件main.py,在Windows环境下可进一步使用.bat文件一键执行该脚本(python ./start.py)或将其封装为exe程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值