我正在尝试构建一个多页仪表板,其中每个页面都使用在一个单独的.py文件中编写的函数。Title_page.py可以从func_1.py读取函数(称为'add_two()'),没有任何问题。但是,在pages文件夹中,Page2.py似乎无法从p2_functions folder下的func_2.py读取函数(称为'multiply_two()')。它抛出一个错误,上面写着:
ModuleNotFoundError:没有名为“p2_functions”的模块
我认为这是因为除了pages文件夹中的.py文件之外,streamlit忽略了其他任何东西,但我不知道如何从其他.py文件或其他文件夹中调用模块和读取函数。
下面是我在Page2.py中的内容:
import streamlit as st
from p2_functions.func_2 import multiply_two
st.markdown("# Page 2 ")
st.write(multiply_two(10 * 20))这是这个结构的树:
├── Title_page.py
├── func_1.py
└── pages
├── Page2.py
└── p2_functions
└── func_2.py发布于 2022-07-12 19:16:26
如果p2_functions文件夹路径来自不同的文件夹,则需要将它们插入Page2.py中。E,g
import sys
# Insert functions path into working dir if they are not in the same working dir
sys.path.insert(1, "C:/<p2_functions folder path>/") # Edit <p2_functions folder path> and put path
from func_2 import multiply_two这就是streamlit可以识别其他文件和其他路径的方法。
发布于 2022-07-12 17:46:25
from pages.p2_functions.func_2 import multiply_twoStreamlit中的导入总是相对于运行streamlit的目录工作.,所以在您的例子中,导入是目录的根目录。
https://stackoverflow.com/questions/72956123
复制相似问题