import sys
またはを使用してモジュールをインポートするPythonコードを見るところはどこでもimport mymodule
ディレクトリまたはパスが指定されていない場合、インタプリタはどのようにして正しいファイルを見つけますか?
import sys
またはを使用してモジュールをインポートするPythonコードを見るところはどこでもimport mymodule
ディレクトリまたはパスが指定されていない場合、インタプリタはどのようにして正しいファイルを見つけますか?
http://docs.python.org/3/tutorial/modules.html#the-module-search-path
6.1.2。モジュール検索パス
名前の付いたモジュール
spam
がインポートされると、インタプリタは最初にその名前の組み込みモジュールを検索します。見つからない場合はspam.py
、変数で指定されたディレクトリのリストで指定されたファイルを検索しますsys.path
。sys.path
これらの場所から初期化されます:
- 入力スクリプトを含むディレクトリ(またはファイルが指定されていない場合は現在のディレクトリ)。
PYTHONPATH
(シェル変数と同じ構文のディレクトリ名のリストPATH
)。- インストールに依存するデフォルト。
注:シンボリックリンクをサポートするファイルシステムでは、入力スクリプトを含むディレクトリは、シンボリックリンクをたどった後に計算されます。つまり、シンボリックリンクを含むディレクトリはモジュール検索パスに追加されません。
初期化後、Pythonプログラムはを変更でき
sys.path
ます。実行中のスクリプトを含むディレクトリは、検索パスの先頭、標準ライブラリパスの前に配置されます。これは、ライブラリディレクトリ内の同じ名前のモジュールの代わりに、そのディレクトリ内のスクリプトがロードされることを意味します。交換を意図していない限り、これはエラーです。詳細については、「標準モジュール」のセクションを参照してください。
「インストール固有のデフォルト」については、site
モジュールのドキュメントを参照してください。
また、sys
モジュールを使用すると、現在のパスが何であるかを確認できます
import sys
print(sys.path)
環境変数として設定されたPYTHONPATHを使用して、パッケージ(ファイルを含むフォルダー__init__.py
)とモジュールを検索します(または、既に一度ロードされている場合は、からモジュールオブジェクトを取得しますsys.modules
)。
Pythonには、ターミナル内にあるものと同じようにパス変数があります。Pythonは、そのパス内のフォルダー、またはプログラムが配置されているフォルダーでモジュールを検索します。