我经历过许多Python相关导入问题,但我无法理解这个问题/让它工作......
我的目录结构是:
Driver.py
A/
Account.py
__init__.py
B/
Test.py
__init__.py
====================
Driver.py
from B import Test
======
Account.py
class Account:
def __init__(self):
self.money = 0
====================
Test.py
from ..A import Account
==================
当我尝试运行时
python Driver.py
我收到错误
追踪(最近一次呼叫最后一次):
来自B import Test的
来自..A导入帐户的
<module>
中的第1行文件“B / Test.py”ValueError:尝试相对导入超出toplevel包
答案 0 :(得分:20)
这种情况正在发生,因为A
和B
是独立的,无关的包,就Python而言。
在与__init__.py
相同的目录中创建Driver.py
,一切都应该按预期工作。
答案 1 :(得分:3)
就我而言,添加 __init__.py
是不够的。如果模块未找到错误,您还必须附加父目录的路径。
root :
|
|__SiblingA:
| \__A.py
|
|__SiblingB:
| \_ __init__.py
| \__B.py
|
要从 A.py 导入 B.py,您必须执行以下操作
import sys
# append the path of the parent directory
sys.path.append("..")
from SiblingB import B
print("B is successfully imported!")