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 に関する限り、Aとが独立しており、関連のないパッケージであるためです。B

__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 に答える