パスの勉強のお時間がやってまいりました。
自作したPythonファイルで、別のファイルを読み出すという時にパスの指定方法でつかえました。メモとして残します。内容は初心者向けです。
要約
- sys ライブラリ、 osライブラリを使ってsys.path.append(os.pardir)という形はよく使われる
- sys.path.append("hoge")のhoge部分に相対パスを指定すればそこから読み出してくれる
本論
前提
下記のファイルで、main.pyからfunctions.pyを読み出したい想定
/application
/common
functions.py
/main
main.py #今自分がここにいるとする
方法1:sys.path.append(os.pardir)を使う。
import sys, os
sys.path.append(os.pardir)
# 読み出したいファイル名
from common.functions import hogehoge
解説
- sys, os -> それぞれPythonの基本ライブラリ(=インストール不要でimport指定だけで使えるようになるライブラリ)。sysはpythonの実行環境に関連する操作、osはOSに関わる基本操作を可能にするもの。
- sys.path -> ライブラリを読み込むパス(C:/hogehoge/hogehoge/みたいな)を 表す
- sys.path.append("hoge") -> 上記をhogeに変更する
- os.pardir -> OS依存の親ディレクトリを表す文字列を表す。Windowsの場合、***「..」***に相当する(コマンドプロンプトに
cd ..
って打つ時の..
に相当) - 上記コードでは、sys.path.append(os.pardir)とコードが読まれた瞬間に、ライブラリの読み込みディレクトリが/applicationsに変更されるので、そのあとcommon.functions.pyの読み込みが可能となっている
方法2:sys.path.append()の括弧内に相対パスを指定する
import sys
sys.path.append("../common")
解説
- やっていることは方法1と同じです
- ただし、こちらなら複雑なディレクトリを表現できます
- 例えば
sys.path.append("../../another_application/lib/hogehoge")
(以上)