python - 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中的导入和模块系统真的不太了解。
解决方案
要进行导入,您只需编写
import Node
这是因为当你写
from .Node import Node
它认为您在当前目录中寻找一个名为 Node 的目录,然后从那里导入 Node 文件。
推荐阅读
- c# - C# RDLC 报告 - 直接到打印机 - 格式折叠
- ruby-on-rails - Rails:需要帮助了解连接表、嵌套表单、关联
- python - 在脚本执行期间询问时如何从python脚本或shell脚本输入密码
- c# - 使用 PlaybackStopped 事件时,Naudio 崩溃问题
- qt - Qml - 为什么删除模型时不会删除tableview中delegate的数据
- node.js - 在nodejs自定义模块中获取res对象
- objective-c - cmake:在 macOS 上找不到命令
- javascript - 如何使用javascript / jquery在更改时写入所有输入类型值的总和?
- mysql - 插入列值与自动增量值相同的行
- azure - 是否可以使用 Powershell 更新 Azure AD 中现有用户的 SignInNames