Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでの絶対インポートと相対インポートの違いを徹底解説

はじめに

Pythonでコードを作成していると、別のPythonファイルやパッケージにあるコードへアクセスする必要が生じることがよくあります。そのような場合には、対象のファイルやパッケージを現在のコードにインポート(import)します。最も基本的な方法は、プログラムの先頭に以下のようなステートメントを記述することです。

import package_name または module_name
または
from package_name import module_name / object_name

このステートメントが解釈されるとき、インタープリタは次の手順で処理を行います。

  • まず、これまでにインポート済みの全モジュールのキャッシュ(sys.modules)から名前を探します。

  • 見つからない場合は、Python標準ライブラリに含まれる組み込みモジュールの一覧の中を検索します。

  • それでも見つからない場合は、sys.pathに定義されたディレクトリ一覧を順に検索します。カレントディレクトリが最初に検索されます。

  • 上記のいずれかでモジュールが見つかると、そのパッケージ名やモジュール名が現在のプログラムのローカルスコープにバインドされます。

  • 最後まで見つからなかった場合は、ModuleNotFoundErrorが発生します。

インポートに関するルール

importステートメントは、それを使用するファイルの先頭に記述するのが基本です。記述する順序は以下の通りです。

  • Python標準ライブラリのモジュール

  • サードパーティ製モジュール

  • ローカルアプリケーション内のモジュール

絶対インポート(Absolute Import)

絶対インポートでは、インポートしたいパッケージ・モジュール・関数までの完全なパスを明示的に指定します。ディレクトリ構造はスラッシュ(/)ではなくドット(.)で区切って表現します。

例として、次のようなパッケージ構成を考えてみましょう。

python_project_name/packageA/moduleA1.py
python_project_name/packageA/moduleA2.py

moduleA2にmyfuncという関数が定義されていると仮定し、この関数を現在のプログラムに取り込みたい場合は、絶対パスを使って次のように記述します。

from packageA.moduleA2 import myfunc

絶対インポートの最大の利点は、どこから何をインポートしているのかが一目でわかる点です。一方で、階層が深いプロジェクトでは記述が長くなりがちというデメリットもあります。

相対インポート(Relative Import)

相対インポートでは、インポート元のパッケージへのパスを、現在のスクリプトが置かれている場所からの相対的な位置関係で指定します。ドット1つ(.)は1階層上、ドット2つ(..)は2階層上を意味し、以降も同様です。

次のようなパッケージ構成を考えてみます。

python_project_name/packageA/moduleA1.py
python_project_name/packageB/moduleB1.py

packageB内のmoduleB1からmoduleA1をインポートしたい場合、importステートメントは次のようになります。

from ..packageA import moduleA1

ここでドット2つは、「moduleB1の位置から1階層上(python_project_name)へ移動し、そこからpackageAに入ってmoduleA1を取得する」ことを表しています。

相対インポートは記述が短く、プロジェクト全体を別の場所へ移動してもimport文のパスを書き換える必要がないのが大きなメリットです。ただし、フォルダ構成を複数プロジェクト間で共有している場合などは、パスの変更がコード全体に影響を及ぼしやすいという注意点があります。

  1. 【初心者向け】CSSの絶対単位と相対単位の違いと使い分けを徹底解説

    CSSの絶対単位と相対単位は、どちらも「距離」を表す単位に分類されます。両者の大きな違いは、長さの基準となる対象にあります。 CSSの相対単位とは 相対単位は、親要素やビューポートなど他の要素を基準として要素の長さを定義します。例えば、相対単位 vh はビューポート(ブラウザの表示領域)の高さを基準とする単位です。 主なCSS相対単位は以下のとおりです。 番号単位と基準 1%親要素の寸法 2emその要素のフォントサイズ 3exその要素のフォントにおける x-height(小文字「x」の高さ) 4lhその要素の行の高さ(line-height) 5remルート要素(html要素)のフォン

  2. PythonでMatplotlibをインポートする方法をわかりやすく解説

    まず最初に、お使いのシステムに Python と pip がインストールされていることを確認しましょう。Pythonのバージョンを確認するには、コマンドプロンプトで以下のコマンドを実行します。python --version続いて、pipのバージョンを確認するには、次のコマンドを使用します。pip -VMatplotlibのインストール手順Pythonとpipが正しくインストールされていることが確認できたら、コマンドプロンプトで以下の pip コマンドを実行してMatplotlibをインストールします。pip install matplotlibインストールが完了したら、Matplotlibが