微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 多级导入

如何解决Python 多级导入

如果相对导入,我会遇到问题。目录结构为:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。