Python の相対インポート
「非パッケージで相対インポートが試行されました」エラーを回避するには、Python の相対インポートを理解することが重要です。
スクリプト vs. Module
重要な違いは、Python ファイルのロード方法にあります。スクリプトとして直接実行すると、その名前は __main__ に設定されます。逆に、インポートされた場合、その名前にはパッケージ情報が含まれます。
命名規則
たとえば、package/subpackage1/moduleX.py 内の moduleX がインポートされる場合、その名前はpackage.subpackage1.moduleX になります。ただし、直接実行する場合、その名前は __main__ です。
相対インポート
相対インポートは、モジュールの名前に依存してパッケージ階層を決定します。名前にドットが含まれていないモジュールは、パッケージの一部として認識されません。
エラーの原因
このエラーは、名前にドットが含まれていないことを示すモジュールで相対インポートが試行されると発生します。パッケージには含まれていません (つまり、名前にドットがありません)。これには、スクリプト (main にドットがないため) と、現在のディレクトリから直接ロードされたモジュール (Python が現在のディレクトリを検索パスに追加する) が含まれます。
ソリューション
Notes
以上がPython での「非パッケージで相対インポートが試行されました」エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。