如何使用这个简单的包来避免 "Attempted relative import with no known parent package"?
How to avoid "Attempted relative import with no known parent package" with this simple package?
在packagetest/
里面,我有这四个文件:
__init__.py
:
class TestError(Exception):
pass
__main__.py
:
from . import TestError
from .abc import defgh
from .ijk.lmn import opq
abc/__init__.py
:
def defgh():
pass
ijk/lmn.py
:
def opq():
pass
当 运行 __main__.py
时,我得到这个错误:
File "D:\packagetest_main_.py", line 1, in
from . import TestError
ImportError: attempted relative import with no known parent package
为什么from . import TestError
这里会报错?
这里怎么解决这个问题,尽量少修改代码?
我已经阅读了 Relative imports in Python 3 但我不知道如何修改我的代码以使其正常工作。
一个解决方案似乎是移动父目录中的所有内容 parent/
:
parent/
|- test.py
|- packagetest/
|- __init__.py
|- __main__.py
|- abc/
|- __init__.py
|- ijk/
|- lmn.py
然后导入里面的包parent/test.py
:
import packagetest
然后就可以了。
在packagetest/
里面,我有这四个文件:
__init__.py
:class TestError(Exception): pass
__main__.py
:from . import TestError from .abc import defgh from .ijk.lmn import opq
abc/__init__.py
:def defgh(): pass
ijk/lmn.py
:def opq(): pass
当 运行 __main__.py
时,我得到这个错误:
File "D:\packagetest_main_.py", line 1, in
from . import TestError
ImportError: attempted relative import with no known parent package
为什么from . import TestError
这里会报错?
这里怎么解决这个问题,尽量少修改代码?
我已经阅读了 Relative imports in Python 3 但我不知道如何修改我的代码以使其正常工作。
一个解决方案似乎是移动父目录中的所有内容 parent/
:
parent/
|- test.py
|- packagetest/
|- __init__.py
|- __main__.py
|- abc/
|- __init__.py
|- ijk/
|- lmn.py
然后导入里面的包parent/test.py
:
import packagetest
然后就可以了。