57

我经历了许多与 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

我得到错误

Traceback (most recent call last):

from B import Test

File "B/Test.py", line 1, in <module> from ..A import Account

ValueError: Attempted relative import beyond toplevel package
4

2 回答 2

35

发生这种情况是因为就 Python 而言,它们是独立的、不相关的包AB

__init__.py在同一目录中创建一个Driver.py,一切都应该按预期工作。

于 2013-02-14T23:53:04.857 回答
5

在我的情况下,添加__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!")
于 2021-05-27T16:27:26.067 回答