【问题标题】:How do I import a class from another folder?如何从另一个文件夹导入类?
【发布时间】:2021-10-02 15:39:24
【问题描述】:

我正在尝试将 checkaxis.py 从 utils 导入数据集文件夹中的 datasetinfo.py。这是结构的样子:

MSseg
|- __init__.py
|-- utils
|       |- __init__.py
|.      | - checkaxis.py
|-- dataset
          |- __init__.py
          |- datasetinfo.py

init.py 方法为空。我尝试导入的方式是:

from .MSseg.utils.checkaxis import CheckAxis

我收到以下导入错误:

Traceback (most recent call last):
  File "datasetinfo.py", line 11, in <module>
    from .MSseg.utils.checkaxis import CheckAxis
ImportError: attempted relative import with no known parent package

【问题讨论】:

  • 试试这个from .utils.checkaxis import CheckAxis。供您参考,如果您有 init.py 它是一个包而不是一个单独的文件夹
  • 得到这个:raceback(最近一次调用最后一次):文件“datasetinfo.py”,第 12 行,在 from .utils.checkaxis import CheckAxis ImportError:尝试相对导入,没有已知的父包
  • 您从哪个目录运行主要 Python 进程?
  • 好吧,我现在只是在数据集文件夹中运行以测试程序,但它最终会在带有 config.py 的 MSseg 上运行。
  • 如果你在名为MSseg的目录中,你只需要from utils.checkaxis import CheckAxis;如果您从名为dataset 的目录运行,请查看是否可以从其父目录运行

标签: python import parent importerror


【解决方案1】:

在你的 MSseg.utils.checkaxis init.py 中添加

from .checkaxis import CheckAxis

然后在MSseg.dataset.datasetinfo.py中

from MSseg.utils import CheckAxis

【讨论】:

  • 我得到以下信息:文件“datasetinfo.py”,第 11 行,在 from utils import CheckAxis ModuleNotFoundError: No module named 'utils'
  • 回溯(最近一次调用最后):文件“datasetinfo.py”,第 11 行,在 中来自 MSseg.utils import CheckAxis ModuleNotFoundError: No module named 'MSseg'
  • “从 MSseg.utils 导入 CheckAxis”是什么意思,我觉得这会告诉 python MSseg 包内还有另一个 MSseg 包。因此,这样做是有意义的“从 .MSseg.utils 导入 CheckAxis”
【解决方案2】:

由于 utils 和 dataset 都来自同一个主管 试试这个:

> from utils.checkaxis import CheckAxis

Python 应该能够识别包。 如果它仍然给出错误,请告诉我。我们可以找到另一个解决方案。

【讨论】:

  • 文件“datasetinfo.py”,第 13 行,在 from utils.checkaxis import CheckAxis ModuleNotFoundError: No module named 'utils'
【解决方案3】:
import sys
sys.path.append('folder location')
import your module

【讨论】:

  • 哪个“文件夹位置”?把这段代码放在哪里?要导入哪个模块?
  • 您的文件夹所在的路径,例如 /home/username/program
  • OP 给出了特定的文件夹结构。请回答这些参数。
  • 我确实试过这个,但它不会通过。我写了 sys.path.append("./MSseg/utils) 和 from utils import checkaxis,但是得到了错误。
猜你喜欢
  • 1970-01-01
  • 2019-09-25
  • 2013-06-03
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 2019-11-24
  • 2022-06-13
相关资源
最近更新 更多