web-dev-qa-db-ja.com

importステートメントにファイル名のみが含まれている場合、pythonモジュールファイルを見つける方法は?

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

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

50
Asciiom

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モジュール のドキュメントを参照してください。

58
dm03514

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

import sys
print(sys.path)
23
reptilicus

環境変数として設定されている [〜#〜] pythonpath [〜#〜] を使用して、パッケージ(___init__.py_ファイルを含むフォルダー)およびモジュール(または、一度ロードされている場合)を検索します、_sys.modules_)からモジュールオブジェクトを取得します。

8
Silas Ray

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

0
alestanis