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不是解释此问题的最佳位置:-)谢谢!它对我有用。