問題の定義:
Python ファイルから相対インポートを試行する場合最上位スクリプトとして実行されると (例: python myfile.py と入力して)、エラー メッセージが表示されます。 「非パッケージで相対インポートを試行しました。」
モジュールとスクリプトの理解:
主な違いは、Python がロード時にファイルを解釈する方法にあります。スクリプトとして直接実行すると、ファイルの名前は「__main__」になります。別のファイルからモジュールとしてインポートされる場合、その名前はそのパッケージ構造を反映します (例: 「package.subpackage.module」)。
相対インポート制限:
相対インポートは、モジュールのフルネームに基づいてパッケージ階層内での位置を決定します。モジュール名にパッケージ情報 (例: "__main__") が含まれていない場合、モジュールはパッケージの一部とみなされないため、相対インポートは失敗します。
エラー説明:
モジュールのフルネームにドットがなく、パッケージの関連付けがないことを示す場合、Python はそれをスタンドアロン スクリプト、および相対インポートは無効になります。このエラーは、次の場合に発生します。
解決策:
追加メモ:
以上がPython スクリプトを直接実行すると相対インポートが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。