ホームページ > バックエンド開発 > Python チュートリアル > Python パッケージで相対インポートを正常に実行するにはどうすればよいですか?

Python パッケージで相対インポートを正常に実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-16 18:00:33
オリジナル
783 人が閲覧しました

How Can I Successfully Perform Relative Imports in Python Packages?

Python での相対インポート

Python では、パッケージ内からモジュールをインポートするのは難しい作業になる場合があります。次のディレクトリ構造を考えてみましょう。

app/
   __init__.py
   sub1/
      __init__.py
      mod1.py
   sub2/
      __init__.py
      mod2.py
ログイン後にコピー

mod1.py で作業していて、mod2.py から何かをインポートする必要があるとします。

from ..sub2 import mod2
ログイン後にコピー

を試みることもできますが、これにより「非パッケージでの相対インポートが試みられました」というエラーが発生します。解決策は、ファイル システムの場所に関係なく、Python が __main__ として実行されるモジュール (例: python mod1.py) をトップレベル モジュールとして解釈するという事実にあります。

相対インポートを有効にするには、インポートするモジュールは次のことを行う必要があります。 __main__ として実行されます。これは、メイン モジュールとしてパッケージを使用してインタープリタを実行することで実現できます:

python -m app.sub1.mod1
ログイン後にコピー

または、__package__ 属性を使用して親パッケージを手動で指定できます:

import sys
sys.path.insert(0, '..')
from sub2.mod2 import MyClass
ログイン後にコピー

Thisメソッドはシステム パスを操作しますが、モジュールを __main__ として実行する必要はありません。

ただし、相対インポートの場合はサブパッケージ内で動作する場合は、__init__.py ファイルが各ディレクトリに存在することを確認することが重要です。これらのファイルはパッケージ マーカーとして機能し、__package__ 属性が含まれるパッケージを参照できるようにします。

以上がPython パッケージで相対インポートを正常に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート