0

"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

この場合、わずか数回のインポートで比較的迅速に絞り込むことができますが、より適切な例外メッセージを記述したり、エラーが実際に発生したインポート行でより多くの情報を提供したりする方法はありますか?

4

1 に答える 1