0

如果相对进口,我会遇到麻烦。目录结构为:

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. 我愿意接受建议,但我真的不想对文件结构进行太多更改。

4

3 回答 3

1

src_1是一个包。folder不是,所以app.py不在一个包中(但其他一切都是)。

包中的相对导入需要.

# in page1.py
from .df_prep import df
# in df_prep.py
from ..database.db_declare import *

在此处查看详细答案:第 10 亿次相对进口

于 2021-01-27T18:38:23.880 回答
0

您可以将导入更改为:

#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 *
于 2021-01-27T18:35:54.883 回答
0

请指定从 src_1 开始的完整路径。这是因为代码是从 app.py 的角度执行的。

#On page_1.py
from src_1.pages.df_prep import df
于 2021-01-27T18:40:12.063 回答