【问题标题】:Import from different folder/module in python从python中的不同文件夹/模块导入
【发布时间】:2020-12-13 00:21:30
【问题描述】:

我有以下文件夹结构

project\
       main.py

       datasets\
                __init__.py
                custom_data.py
       models\
                __init___.py
                model1.py
                model2.py
                func.py

我想在 custom_data 中导入 func.py。 (不使用辅助库)

主函数导入custom_data.py:

from datasets.custom_dataset import build as build_dataset

当代码运行 custom_dataset 时,找不到模块 func

ModuleNotFoundError: 没有名为“func”的模块

我已经尝试过在 stackoverflow 中看到的所有内容:

从 ..models 导入函数 from project.models 导入函数

我什至尝试将 func.py 复制为数据集中的副本,但它根本不起作用(当我在 custom_data.py 中使用 func 函数时它确实起作用,但当我从 main.py 调用它时不起作用。 py 文件)。

谁能帮帮我?是不是因为我用的是windows? 我知道我可以找到很多与此相关的其他问题,但没有一个对我有帮助。

【问题讨论】:

    标签: import python-import


    【解决方案1】:

    首先,您的目录结构看起来不错。但是,您应该将models/__init___.py 重命名为models/__init__.py。

    至于这一行:

    from datasets.custom_dataset import build as build_dataset
    

    我猜你的意思是:

    from datasets.custom_data import build as build_dataset
    

    因为您的文件名是 custom_data.py 而不是 custom_dataset.py。

    最后,至于在custom_data.py 中导入func,您需要做的就是:

    from models import func
    

    在custom_data.py内。

    这样做的原因:

    from ..models import func
    

    不起作用是因为像这样的“相对”导入只能在包中正常工作。 this 答案中或多或少地解释了它,所以我不会在这里重复细节。

    希望这会有所帮助!

    【讨论】:

    • 实际上,一旦我添加了 PYTHONPATH,一切都很好,我已经有一段时间不太记得了。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2013-08-26
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多