Python基礎7:システムパラメータ/パス管理(sys)
1.概要
システムパラメータやパス管理ができるPython標準ライブラリのsysを紹介します。
2.パス(環境変数)とは
初めにCMDでnotepadを入力してみるとメモ帳が立ち上がります。PCがメモ帳(notepad)を立ち上げることができた理由は、notepadの場所(正確には探す場所)を覚えており、その中からnotepadを探したためです。
ここでのパスとはPCが記憶する場所であり「パスを通す」とはPCが選択する箇所を覚えさえることになります。逆に言うとパスが通ってないとPCは探す場所がわからないためファイル/ディレクトリを検索できません。
参考までにパスの通し方は下記の通りです。
3.モジュールの検索パス:sys.path
モジュール(Pythonファイル)が検索するパスを確認するにはsys.pathを使用します。実行個所は下記フォルダ内の”note_sys.ipynb”で実施しています。
[In]
import sys
sys.path
[Out]
['c:\\Users\\KIYO-\\Desktop\\note\\note_sys',
'C:\\Users\\KIYO-\\anaconda3\\python39.zip',
'C:\\Users\\KIYO-\\anaconda3\\DLLs',
'C:\\Users\\KIYO-\\anaconda3\\lib',
'C:\\Users\\KIYO-\\anaconda3',
'',
'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages',
'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\locket-0.2.1-py3.9.egg',
'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\Pythonwin',
'C:\\Users\\KIYO-\\anaconda3\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\KIYO-\\.ipython',
'C:\\Users\\KIYO-\\AppData\\Roaming\\Python\\Python39\\site-packages']
検索パスを確認すると「実行ファイルとカレントディレクトリが一番最初に検索され、その後はリスト順に検索」されることがわかります。sys.pathはリスト形式のため後述する通りパスを追加することが可能です。
3.検索パスを追加:sys.path.append()
前章の通りカレントディレクトリは”環境変数の設定”をしなくても検索パスとして扱われますが、それ以外はパスが通ってないと検索ができません。
Pythonでパスを通す場合はsys.path.append('path')を使用します。
[In]
import sys
sys.path.append(r'.KIYO/適当に名前つけたよ')
sys.path[-1] #リストの一番最後の値を取得
[Out]
'.KIYO/適当に名前つけたよ'
検索パスの追加(sys.pathの編集)方法として「環境変数PYTHONPATH」があります。触ってみたけど難しかったので紹介まで。
4.コマンドラインから引数を取得:sys.argv
(Jupyterではなく)pythonファイルをターミナルから実行するときに引数を渡したい場合はあります。引数を渡す場合はsys.argvを使用します。
ターミナル経由でsys.argvを使用するとリスト形式で['モジュール名']が渡され、引数を記載すると['モジュール名', '引数']で渡されます。よってターミナルから引数を取得したい場合はsys.argv[1]となります。
[In] notesys.py
import sys
print(sys.argv)
[Out]
['ファイル名', '引数1', '引数2'・・・ ]
詳細は下記参照
参考記事
あとがき
前記事からsysだけ分離しました。