最終更新:2022-09-26 (月) 22:36:57 (67d)  

Python/import
Top / Python / import

https://docs.python.org/ja/3/reference/simple_stmts.html#import

用語

モジュール

  • 関数やクラスなどをまとめて書いたファイル

パッケージ

  • モジュールと__init__.pyを含むディレクトリ
  • Python 3.3以降では、__init__.pyを含まないディレクトリもパッケージとしてインポートできる (名前空間パッケージ)

検索パス

  • spam という名前のモジュールをインポートするとき、インタープリターはまずその名前のビルトインモジュールを探します。見つからなかった場合は、 spam.py という名前のファイルを sys.path にあるディレクトリのリストから探します。 sys.path は以下の場所に初期化されます:
  • 入力されたスクリプトのあるディレクトリ (あるいはファイルが指定されなかったときはカレントディレクトリ)。
  • PYTHONPATH (ディレクトリ名のリスト。シェル変数の PATH と同じ構文)。
  • インストールごとのデフォルト。

メモ

  • Python3系ではimport xxxはsys.pathに存在するpackageをimportするように変更され(absolute importと呼ぶ)、implicit relative importは不可能になった。
  • package内のモジュールをimportするためには、from . import mymodule1のようにrelative importであることを明示しなければならない(これをexplict relative importと呼ぶ)。

Python 3.0

  • from module import * はモジュールレベルでのみ許され、関数内での使用は許されません。
  • 相対インポートに許される構文は from .[module] import name のみです。 . で始まらない形の全ての import は絶対インポートと解釈されます。 (PEP 328)

Python/パッケージ

import パッケージ名.モジュール名
import パッケージ名.モジュール名.属性名
from パッケージ名 import モジュール名

Python/モジュール

import

  • モジュール全体をインポート
    import モジュール名

from

  • モジュールの一部の関数やオブジェクトやメソッドを限定してインポート
  • モジュール名の部分を省略して呼び出せる
    from モジュール名 import 属性1,属性2
    from モジュール名 import *

as

  • 別名でのインポート
    import モジュール名1 as 別名1,モジュール名2 as 別名2
    from モジュール名 属性1 as 別名1,属性2 as 別名2

relad

  • reload(モジュール名)

実際のモジュールのファイル

  • print(モジュール名)とするとパスが表示される
    Python/sys<module 'sys' (built-in)>
    Python/pprint<module 'pprint' from '/usr/lib/python3.8/pprint.py'>

sys.path

PEP 8