【python学習ノート】モジュールが検索パスをインポートする検索順序は何ですか?
1441 ワード
検索順は?
内蔵モジュール-』メインディレクトリ-』PYTHONPATH環境変数-』標準ライブラリ-』.pthファイル指定の内容
したがって、ホームディレクトリにカスタムモジュールファイルがある場合は、まずロードされ、その後の標準ライブラリのモジュールファイルはロードされない可能性があります.つまり、非表示になります.
やはり実験してみましょう.
sysを作成する.pyはメインディレクトリの下にあり、以下はwindowsのpy 3です.5実験のpy内容:
これにより、cmdでpythonを実行し、import sysを印刷します.
This is my own sys.py
しかし、実際にはそうではありません.built-inのsysをロードし、sysを直接入力すると表示されます.
sysが内蔵されている以上、osを試してみてください.同じ方法で、同じ結果を得ます.
OSは標準ライブラリにあるので、現在のディレクトリの下にあるはずです.pyはライブラリのosモジュールを上書き(非表示)します.最後にやってみようfuture__,それが可能です.
これはなぜですか.pythonコマンドを実行すると、osはいくつかの初期化作業としてインポートされたと思いますが、実際には手動import osでは、リロードされていません.どのように証明しますか?pythonのマニュアルを見てpyは初期化時に自動的に実行されるので、まず彼の内容を見てみましょう.確かにあります.
import sys
import os
では、この2つの文の前に1つ追加し、終了を保存します.
import __future__
cmdのpythonを終了し、pythonコマンドを再実行してからインポートしてみます.
今回は出力されません.
現在のディレクトリで定義したとしてもfuture__.pyなので、確かにロードされています.
ここまで検討しておきましょう><,洗濯して寝た.
内蔵モジュール-』メインディレクトリ-』PYTHONPATH環境変数-』標準ライブラリ-』.pthファイル指定の内容
したがって、ホームディレクトリにカスタムモジュールファイルがある場合は、まずロードされ、その後の標準ライブラリのモジュールファイルはロードされない可能性があります.つまり、非表示になります.
やはり実験してみましょう.
sysを作成する.pyはメインディレクトリの下にあり、以下はwindowsのpy 3です.5実験のpy内容:
# filename sys.py in current working directory
def func():
print('This is my own sys.py')
func()
これにより、cmdでpythonを実行し、import sysを印刷します.
This is my own sys.py
しかし、実際にはそうではありません.built-inのsysをロードし、sysを直接入力すると表示されます.
>>> sys
<module 'sys' (built-in)>
sysが内蔵されている以上、osを試してみてください.同じ方法で、同じ結果を得ます.
>>> os
<module 'os' from 'C:\\Program Files\\Python35\\lib\\os.py'>
OSは標準ライブラリにあるので、現在のディレクトリの下にあるはずです.pyはライブラリのosモジュールを上書き(非表示)します.最後にやってみようfuture__,それが可能です.
>>> import __future__
this is my __future__
これはなぜですか.pythonコマンドを実行すると、osはいくつかの初期化作業としてインポートされたと思いますが、実際には手動import osでは、リロードされていません.どのように証明しますか?pythonのマニュアルを見てpyは初期化時に自動的に実行されるので、まず彼の内容を見てみましょう.確かにあります.
import sys
import os
では、この2つの文の前に1つ追加し、終了を保存します.
import __future__
cmdのpythonを終了し、pythonコマンドを再実行してからインポートしてみます.
>>> import __future__
今回は出力されません.
this is my __future__
現在のディレクトリで定義したとしてもfuture__.pyなので、確かにロードされています.
ここまで検討しておきましょう><,洗濯して寝た.