とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサードリンク

Pythonで親階層に存在するモジュールのimport

WindowsでPython シリーズ その23


今回は親のディレクトリにあるmodule呼び出しを行います。
フォルダ構造は以下のように配置し、 call_parent.py ファイルから、parent.py で定義されたモジュールを呼び出します。
E:.
│ parent.py

└─child
call_parent.py


Pythonでは、最初に実行したファイルがルートディレクトリになる


Pythonでimportをする場合、パスが通って無くてはなりません。
実行しているモジュールより下の階層に存在する場合は前回やりましたが、自身より上位ディレクトリに存在するモジュールを呼び出す場合はパスを通す必要があります。

Pythonマニュアルの
sys.path
を参考にコードを書いてみます。

まずは親のコードから


んで、親のコードより下の階層にある child/call_parent.py


sys.path.append('../') #←ここが大事

このコマンドが全てですが、
この状態で、子供のモジュールを実行します。
sys.path に相対パスを指定し、自分より親ディレクトリをimportの検索パスに指定しているわけです。

実行結果がこちら。

Pythonで親階層に存在するモジュールのimport

sys.path.append('../') をコメントアウトするとこうなります。

Pythonで親階層に存在するモジュールのimport

Pythonでは、実行ファイルがルートディレクトリとして扱われる


Pythonを始めて実行したファイルがルートディレクトリになるという決まりがあるので
できれば最も上位のディレクトリにmain.pyを作成して、必要に応じて必要なファイルをimportするのがよさそうです。

いろんなブログを見ていると、Pythonのimportは何かとトラブルの元になるようですので
ファイルを分ける際にはパスの参照を意識して書いていきましょう。
▼この記事を読んだ方は、こんな記事も読んでいます。▼

スポンサードリンク

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://dalmore.blog7.fc2.com/tb.php/183-636e9112
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。