Python 如何避免;尝试在没有已知父包的情况下进行相对导入“;用这个简单的包?
在Python 如何避免;尝试在没有已知父包的情况下进行相对导入“;用这个简单的包?,python,python-3.x,python-import,Python,Python 3.x,Python Import,在packagetest/中,我有以下四个文件: \uuuu init\uuuuu.py: class TestError(Exception): pass from . import TestError from .abc import defgh from .ijk.lmn import opq def defgh(): pass def opq(): pass import packagetest \uuuu main\uuuuu.py: class
packagetest/
中,我有以下四个文件:
:\uuuu init\uuuuu.py
class TestError(Exception): pass
from . import TestError from .abc import defgh from .ijk.lmn import opq
def defgh(): pass
def opq(): pass
import packagetest
:\uuuu main\uuuuu.py
class TestError(Exception): pass
from . import TestError from .abc import defgh from .ijk.lmn import opq
def defgh(): pass
def opq(): pass
import packagetest
:abc/\uuuuuu init\uuuuuuuuuuuuupy
class TestError(Exception): pass
from . import TestError from .abc import defgh from .ijk.lmn import opq
def defgh(): pass
def opq(): pass
import packagetest
:ijk/lmn.py
class TestError(Exception): pass
from . import TestError from .abc import defgh from .ijk.lmn import opq
def defgh(): pass
def opq(): pass
import packagetest
\uuuu main\uuuuu.py
时,出现以下错误:
文件“D:\packagetest\u main\uu.py”,第1行,在从…起导入测试仪错误
ImportError:尝试在没有已知父包的情况下进行相对导入 为什么
来自。导入测试仪错误
在此处生成错误?
如何解决此问题并尽可能少地修改代码?
我已经读过了,但我不知道如何在这里修改代码以使其正常工作。本文提供了解决此问题的几种方法,并解释了相对导入的工作原理
一个对我有效的解决方案是移动父目录中的所有内容parent/
:
parent/
|- test.py
|- packagetest/
|- __init__.py
|- __main__.py
|- abc/
|- __init__.py
|- ijk/
|- lmn.py
然后在父级/test.py中导入包:
class TestError(Exception):
pass
from . import TestError
from .abc import defgh
from .ijk.lmn import opq
def defgh():
pass
def opq():
pass
import packagetest
然后它就工作了。要导入一个包。在父文件夹
packagetest
之外的Python控制台中,执行导入packagetest
。如果您从包中任意运行(直接)脚本,几乎总是会出现导入错误。您可以在我的教程@napuzba中找到有关相对导入如何工作以及如何避免此异常的详细说明。这非常有用,谢谢。为了将来的参考,你能用你的链接+和它的摘要发布一个答案吗?是的。Python相对导入是如此混乱和模糊。在SO中,有200多个关于此异常或类似异常的问题。添加了对文章的引用-似乎SO不是解释此问题的最佳位置:-)谢谢!它对我有用。