"attempted relative import beyond top-level package"
インポートに例外処理を含めて、一般的なエラーを絞り込みたいと思います。
Django のテストでは、自分DjangoProject/tests.py
自身に関連するインポートを記述しました ( tests.py
)。各テストファイルを実行するデフォルトunittests.py
は、DjangoProject フォルダーも含むルートフォルダーにあります。
attempted relative import beyond top-level package
をユニットテストに追加した瞬間に
エラーが発生したDjangoProject/tests.py
ため、それがインポートに起因することは明らかでした。try/except を使用すると、少し明確なエラーを書くことができたので、なぜ、どのファイルがエラーを引き起こしたのかを推測する必要はありません。
今私のコードは次のようになります:
try:
from django.utils.safestring import mark_safe
import json
from django.conf import settings
from viewsfunctions import *
from .. import PoM
import unittest
except Exception as importex:
print("Error in the tests.py-imports: "+str(importex))
そして、最初にメッセージを投げました:
"No module named 'viewsfunctions'"
これは意味がありviewsfunctions
、内部のモジュールと同様に役立ちますDjangoProject
。私は行を次のように置き換えました:from DjangoProject.viewsfunctions import *
次のエラーは次のとおりです。
Error in the Imports: attempted relative import beyond top-level package
そして、これはまさに私の問題です。これは何でもかまいません。pdbするだけで、それを追跡できfrom .. import PoM
ます(モジュールPoM
は最上位フォルダーに関連していますが、同じフォルダーでtests.py
の実行に関連しているため)unittests.py
この場合、わずか数回のインポートで比較的迅速に絞り込むことができますが、より適切な例外メッセージを記述したり、エラーが実際に発生したインポート行でより多くの情報を提供したりする方法はありますか?