首页 > 解决方案 > ImportError:尝试在包内导入同级时尝试在没有已知父包的情况下进行相对导入

问题描述

我正在尝试从我的一个项目中构建一个 python 包。我有一个这样的目录结构:

mypackage
    setup.py
    src
        __init__.py
        mypackage.py
        Node.py
        (... and a lot of other files and subdirectories)

在 mypackage.py 中,我像这样导入Node类:

from .Node import Node

以及其他一些类,以便mypackage以后导入时可以直接访问它们。但是,在成功构建包后(仅使用pip install "mypackage/"mypackage 文件夹的父目录 rn),尝试在 python 中导入包时,出现以下错误

    from .Node import Node
    ImportError: attempted relative import with no known parent package

据我所知, mypackage.py 绝对应该是包的一部分,所以我真的不明白为什么它不能像这样导入兄弟姐妹。在setup.py文件中,我指定

from setuptools import setup
setup(
    <...>
    py_modules=['mymodule'],
    package_dir={'': 'src'}
)

我在这里想念什么?我对Python中的导入和模块系统真的不太了解。

标签: python

解决方案


要进行导入,您只需编写

import Node

这是因为当你写

from .Node import Node

它认为您在当前目录中寻找一个名为 Node 的目录,然后从那里导入 Node 文件。


推荐阅读