尝试在当前结构中的非包错误中进行相对导入
Posted
技术标签:
【中文标题】尝试在当前结构中的非包错误中进行相对导入【英文标题】:Attempted relative import in non-package error in current structure 【发布时间】:2015-03-31 13:17:25 【问题描述】:我在此导入语句中得到“尝试在非包中进行相对导入”。问题出在哪里?
from ..Resources.UniversalHelper.Helper import UniversalPageHelper
结构:
project/
__init__.py
MainFiles/
__init__.py
Main.py (where this from statement is being called)
Resources/
__init__.py
UniversalHelper/
__init__.py
Helper.py
【问题讨论】:
你有__init__
文件吗?
是在当前目录中的根目录(..)和资源目录。所有这些初始化文件都是空的。
How to do relative imports in Python? 的可能重复项
我知道它是重复的,但另一个问题没有给出明确的答案......
【参考方案1】:
将__init__.py
文件放在每个目录中并不重要。在我看来,导入Main.py
是由import Main
在某处或通过运行脚本python project/MainFiles/Main.py
完成的。
ValueError: Attempted relative import in non-package
告诉你,Main
没有作为包结构的一部分加载。您需要将其作为完整的包导入,如 import project.MainFiles.Main
或作为模块 python -m project.MainFiles.Main
运行。
如果最后一个是您的问题,您还应该查看__main__.py
。
【讨论】:
是的,只要你在项目深处运行主程序,你应该使用python -m
以上是关于尝试在当前结构中的非包错误中进行相对导入的主要内容,如果未能解决你的问题,请参考以下文章
即使使用 __init__.py,如何修复“尝试在非包中进行相对导入”