问题描述
如果相对导入,我会遇到问题。目录结构为:
folder
app.py
src_1
__init__.py
database
db_declare.py
__init__.py
pages
page_1.py
df_prep.py
__init__.py
好的,现在我有:
#On app.py
from src_1.pages import page_1
#On page_1.py
from df_prep import df
#On df_prep.py
from database.db_declare import *
但我还是明白了
"*\folder\src_1\pages\page_1.py",line 9,in <module>
from df_prep import df
ModuleNotFoundError: No module named 'df_prep'
当我运行 app.py
时。我曾尝试将“..”添加到 sys.path
,但最终会添加到许多“..”。我试过了
谢谢你。我想保持脚本中的导入不变,这意味着如果两个脚本在同一个文件夹中,则没有理由在 from pages.df_prep import df
中写入 pages_1.py
。
我愿意接受建议,但我真的不想对文件结构进行太多更改。
解决方法
src_1
是一个包。 folder
不是,因此 app.py
不在包中(但其他所有内容都在包中)。
包中的相对导入需要 .
:
# in page1.py
from .df_prep import df
# in df_prep.py
from ..database.db_declare import *
在此处查看详细答案:Relative imports for the billionth time
,您能否将导入更改为:
#On app.py
from src_1.pages import page_1
#On page_1.py
from .df_prep import df
#On df_prep.py
from ..database.db_declare import *
,
请指定从 src_1 开始的完整路径。这是因为代码是从 app.py 的角度执行的。
#On page_1.py
from src_1.pages.df_prep import df