来自兄弟文件夹的Python导入模块

时间:2013-02-14 23:48:40

标签: python import module relative

我经历过许多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包

2 个答案:

答案 0 :(得分:20)

这种情况正在发生,因为AB是独立的,无关的包,就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!")