70

import sysまたはを使用してモジュールをインポートするPythonコードを見るところはどこでもimport mymodule

ディレクトリまたはパスが指定されていない場合、インタプリタはどのようにして正しいファイルを見つけますか?

4

4 に答える 4

70

http://docs.python.org/3/tutorial/modules.html#the-module-search-path

6.1.2。モジュール検索パス

名前の付いたモジュールspamがインポートされると、インタプリタは最初にその名前の組み込みモジュールを検索します。見つからない場合はspam.py、変数で指定されたディレクトリのリストで指定されたファイルを検索しますsys.pathsys.pathこれらの場所から初期化されます:

  • 入力スクリプトを含むディレクトリ(またはファイルが指定されていない場合は現在のディレクトリ)。
  • PYTHONPATH(シェル変数と同じ構文のディレクトリ名のリストPATH)。
  • インストールに依存するデフォルト。

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

初期化後、Pythonプログラムはを変更できsys.pathます。実行中のスクリプトを含むディレクトリは、検索パスの先頭、標準ライブラリパスの前に配置されます。これは、ライブラリディレクトリ内の同じ名前のモジュールの代わりに、そのディレクトリ内のスクリプトがロードされることを意味します。交換を意図していない限り、これはエラーです。詳細については、「標準モジュール」のセクションを参照してください。

「インストール固有のデフォルト」についてはsiteモジュールのドキュメントを参照してください。

于 2013-03-06T15:58:30.823 に答える
27

また、sysモジュールを使用すると、現在のパスが何であるかを確認できます

import sys
print(sys.path)
于 2013-03-06T15:59:19.850 に答える
9

環境変数として設定されたPYTHONPATHを使用して、パッケージ(ファイルを含むフォルダー__init__.py)とモジュールを検索します(または、既に一度ロードされている場合は、からモジュールオブジェクトを取得しますsys.modules)。

于 2013-03-06T15:58:11.157 に答える
1

Pythonには、ターミナル内にあるものと同じようにパス変数があります。Pythonは、そのパス内のフォルダー、またはプログラムが配置されているフォルダーでモジュールを検索します。

于 2013-03-06T15:58:03.503 に答える