インタープリタが検索する順序

下記のようなPython試験問題があります。

あるモジュールがインポートされるときにインタープリタが検索する順序は、まずビルトインモジ
ュール、次に sys.path 変数で得られるディレクトリ、最後にシンボリックリンクを置いてあるディ
レクトリである。

ひとつずつ見ていきます。

「ビルトインモジュール」

組み込み関数のあるモジュールのことです。

組み込み関数

print()は組み込み関数で、正式にはbuiltins.をつけます。

__builtins__.print("Hello!")
Hello!

「sys.path変数で得られるディレクトリ」

sys.path変数とは、下記コマンドを実行するとシステムに関するパスが出てくるものです。

import sys
print(sys.path)
['C:\\anaconda3\\envs\\python\\python311.zip', 'C:\\anaconda3\\envs\\python\\DLLs', 'C:\\anaconda3\\envs\\python\\Lib', 'C:\\anaconda3\\envs\\python', '', 'C:\\anaconda3\\envs\\python\\Lib\\site-packages', 'C:\\anaconda3\\envs\\python\\Lib\\site-packages\\win32', 'C:\\anaconda3\\envs\\python\\Lib\\site-packages\\win32\\lib', 'C:\\anaconda3\\envs\\python\\Lib\\site-packages\\Pythonwin']

シンボリックリンクを置いてあるディレクトリ

下記ドキュメントを参照します。

https://docs.python.org/ja/3/tutorial/modules.html

注釈

シンボリックリンクをサポートするファイルシステム上では、入力されたスクリプトのあるディレクトリはシンボリックリンクをたどった後に計算されます。言い換えるとシンボリックリンクを含むディレクトリはモジュール検索パスに追加 されません

よって、シンボリックリンクを置いてあるディレクトリは、インタープリタが検索するパスには追加されません。

よって、本問は誤りとなり、インタープリタが検索する順番は「ビルトインモジュール」→「sys.path変数で得られるディレクトリ」となります。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。