Pythonのsys.pathとは何か

Python基礎認定試験の勉強をしていますが、sys.pathというのがイマイチ理解できず調べてみました。

Pythoチュートリアルを見てみる

Pythonチュートリアルに記載を見つけました。

モジュールを検索するパスを示す文字列のリスト

https://docs.python.org/ja/3/library/sys.html

だそうです。もう少し引用させてもらいます。

モジュールを検索するパスを示す文字列のリスト。 PYTHONPATH 環境変数と、インストール時に指定したデフォルトパスで初期化されます。

起動時に初期化された後、リストの先頭 (path[0]) には Python インタプリタを起動したスクリプトのあるディレクトリが挿入されます。スクリプトのディレクトリがない (インタプリタが対話セッションで起動された時や、スクリプトを標準入力から読み込んだ場合など) 場合、 path[0] は空文字列となり、Python はカレントディレクトリからモジュールの検索を開始します。スクリプトディレクトリは、 PYTHONPATH で指定したディレクトリの 前 に挿入されますので注意が必要です。

プログラムはその目的のために、このリストを自由に修正できます。文字列とバイト列だけが sys.path に追加でき、 ほかの全てのデータ型はインポート中に無視されます。

https://docs.python.org/ja/3/library/sys.html

私の理解が正しければ、モジュールを呼び出す時(検索する時)に探す先のパスのリストということです。よくWindowsで「パスを通す」なんて表現をして「%PATH%」にプログラムのパスを追加したりしますが、この「%PATH」みたいなものかなと理解しました。

sys.pathの中身を見てみる

実際にsys.pathの中身を見てみました。

>>> import sys
>>> for i in enumerate(sys.path):
...     print(i)

sysモジュールをインポートした上で「sys.path」の中身をprintで表示させます。結果は以下の通りです。

(0, '')
(1, 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\\python39.zip')
(2, 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\\DLLs')
(3, 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\\lib')
(4, 'C:\\Users\\username\\AppData\\Local\\Microsoft\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0')
(5, 'C:\\Users\\username\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python39\\site-packages')
(6, 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0')
(7, 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\\lib\\site-packages')

出力結果をみてもピンときませんが、まぁ、いろいろとパスが入っているのが分かりました。

所感

今は趣味?将来投資?でPythonの勉強を始めたところですが、もっと高度なプログラミングが求められる時に、トラブルシューティングする必要がある時に、こういった知識が必要なのかな、と思いました。

あくまで、Pythonの勉強を始めたばかりの私の意見ですが。

めっさん
  • めっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後日系企業でグローバル案件に携わる。大小様々な企業を転々としながら、マレーシアやアメリカへの赴任経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。年齢は秘密だけど定年も間近かな。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です