首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流光多页:如何从不同目录导入模块

流光多页:如何从不同目录导入模块
EN

Stack Overflow用户
提问于 2022-07-12 17:18:11
回答 2查看 773关注 0票数 1

我正在尝试构建一个多页仪表板,其中每个页面都使用在一个单独的.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中的内容:

代码语言:javascript
复制
import streamlit as st
from p2_functions.func_2 import multiply_two

st.markdown("# Page 2 ")
st.write(multiply_two(10 * 20))

这是这个结构的树:

代码语言:javascript
复制
├── Title_page.py
├── func_1.py
└── pages
    ├── Page2.py
    └── p2_functions
        └── func_2.py
EN

回答 2

Stack Overflow用户

发布于 2022-07-12 19:16:26

如果p2_functions文件夹路径来自不同的文件夹,则需要将它们插入Page2.py中。E,g

代码语言:javascript
复制
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可以识别其他文件和其他路径的方法。

票数 1
EN

Stack Overflow用户

发布于 2022-07-12 17:46:25

代码语言:javascript
复制
from pages.p2_functions.func_2 import multiply_two

Streamlit中的导入总是相对于运行streamlit的目录工作.,所以在您的例子中,导入是目录的根目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72956123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档