ホームページ  >  記事  >  バックエンド開発  >  Python の「最上位パッケージを超えた相対インポートが試行されました」エラーを解決するにはどうすればよいですか?

Python の「最上位パッケージを超えた相対インポートが試行されました」エラーを解決するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-18 07:35:02585ブラウズ

How to Resolve Python's

Python 相対インポート エラー: 「最上位パッケージを超えて相対インポートが試行されました」のトラブルシューティング

Python では、相対インポートによりモジュールを参照できます現在のディレクトリを基準としたパッケージ内。ただし、最上位パッケージを超えて相対インポートを試行すると、「ValueError: 最上位パッケージを超えて相対インポートを試行しました。」というエラーが発生する可能性があります。

次のパッケージ構造を考慮してください:

package/
   __init__.py
   A/
      __init__.py
      foo.py
   test_A/
      __init__.py
      test.py

python -m test_A.test を使用してパッケージ ディレクトリ内で test.py を実行すると、上記のエラーが発生します。その理由は、Python は test_A.test が配置されている最上位パッケージに関する情報を保持しないためです。

from ..A import foo を使用する場合、Python はロードされた場所と兄弟関係にあるディレクトリにアクセスしようとします。ただし、この場合、パッケージはパッケージとして認識されないため、兄弟ディレクトリの概念はありません。

対照的に、 python -m package.test_A.test を実行すると、Python がパッケージを識別できるため、相対インポートが正しく解決されます。

ただし、Python では現在の作業ディレクトリがパッケージとして認識されないため、依然として問題が残ります。謎。その有用性にもかかわらず、この見落としにより、最上位ディレクトリからの相対インポートを試行するとエラーが発生する可能性があります。

以上がPython の「最上位パッケージを超えた相対インポートが試行されました」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。