【问题标题】:Not able to import a python class from another directory in python [duplicate]无法从python中的另一个目录导入python类[重复]
【发布时间】:2021-10-06 17:52:38
【问题描述】:

我正在尝试从另一个目录导入一个 python 类,但它一直显示“找不到模块”

MLJAR-SUPERVISED
├── examples
│   │── notebooks
│   └── scripts
│          └── target.py
└── supervised
    └── source.py

我正在尝试将 evaluation 的类从 source.py 导入到 target.py 与此:

from supervised.source import evaluation

但它显示 `ModuleNotFoundError: No module named 'supervised' 在 python 3.9 中执行此操作的最佳方法是什么?

【问题讨论】:

    标签: python python-3.x python-import


    【解决方案1】:

    有多种方法可以解决此问题。第一种方法是将包含 source.py 的受监督文件夹移动到脚本文件夹中。所以文件结构看起来像这样:-

    MLJAR-SUPERVISED
    ├── examples
       │── notebooks
       |── scripts
               |── target.py
               └── supervised
                      └── source.py
    
    

    第二种方式在这里得到了广泛的回答...link

    【讨论】:

    • 这确实有效,但我真的很想知道为什么我的方法不对?
    • 当你 import abc 时,Python 会检查 sys.modules 中的模块 abc。这是之前导入的所有模块的缓存。如果在其中找不到名称,Python 将继续搜索内置模块列表。这些是 Python 预装的模块。如果在内置模块中仍未找到该名称,Python 然后在sys.path 定义的目录列表中搜索它。该列表通常包括首先搜索的当前目录。由于您的包存在于不同的目录中,因此会发生错误。
    【解决方案2】:

    您应该在名为__init__.py(完全正确)的受监管文件夹中创建一个新文件
    然后你就可以使用from supervised.source import evaluation 导入类了。

    【讨论】:

    • 我试过了,对我没用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2017-05-04
    • 2017-09-12
    相关资源
    最近更新 更多