モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

Python モジュール/パッケージのインポートについて

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2013/07/22
最終更新最終更新
2020/09/16
記事区分記事区分
一般公開

目次

    プログラミング教育者。ScratchやPythonを教えています。

    コードをファイル分割する場合、メインファイルでサブファイルをインポートする必要があります。
    インポート可能なファイルは、

    1. サーチパスに含まれるディレクトリ直下のファイル (モジュールインポート)
    2. サーチパスに含まれるディレクトリ直下のディレクトリに含まれるファイル (パッケージインポート)

    の2種類があります。

    モジュールインポート

    サーチパスには、

    • メインファイルが存在するディレクトリ
    • 環境変数$PYTHONPATHで指定されたディレクトリ

    などがあります。以下では、メインファイルが存在するディレクトリにサブファイルが存在している場合の例を示しています。

    import

    ディレクトリ構成

    $ tree .
    .
    |-- main.py
    `-- sub.py
    

    main.py

    #!/usr/bin/python
    import sub
    print sub.x
    
    sub.setX(256)
    print sub.x
    
    sub.x = 512
    print sub.x
    

    sub.py

    x = 128
    def setX(var):
        global x
        x = var
    

    実行例

    $ python main.py 
    128
    256
    512
    

    実行後のディレクトリ構成 (バイトコンパイルされたsub.pycが生成されています)

    $ tree .
    .
    |-- main.py
    |-- sub.py
    `-- sub.pyc
    

    from import

    C++などにおける、using namespaceに相当するインポート方法もあります。

    ディレクトリ構成

    $ tree .
    .
    |-- main.py
    `-- sub.py
    

    main.py

    #!/usr/bin/python
    from sub import setX,getX
    setX(1024)
    print getX()
    

    sub.py

    x = 128
    def setX(var):
        global x
        x = var
    
    def getX():
        global x
        return x
    

    実行例

    $ python main.py 
    1024
    

    パッケージインポート

    サブディレクトリ内のファイルをインポート (パッケージインポート) するためには、空の__init__.pyファイルを作成し、
    ディレクトリのパス情報を含めたimportあるいはfrom import宣言を記述します。

    ディレクトリ構成

    $ tree .
    .
    |-- main.py
    `-- my
        |-- __init__.py
        `-- sub.py
    

    main.py

    #!/usr/bin/python
    import my.sub
    print my.sub.x
    
    my.sub.setX(256)
    print my.sub.x
    
    my.sub.x = 512
    print my.sub.x
    

    sub.py

    x = 128
    def setX(var):
        global x
        x = var
    

    実行例

    $ python main.py 
    128
    256
    512
    

    実行後のディレクトリ構成

    $ tree .
    .
    |-- main.py
    `-- my
        |-- __init__.py
        |-- __init__.pyc
        |-- sub.py
        `-- sub.pyc
    

    __init__.py で import する書き方

    __init__.py に import 文が記載してある場合は、利用する際にディレクトリを指すように import することができます。

    my/__init__.py

    # -*- coding: utf-8 -*-
    import my.sub
    

    main.py

    #!/usr/bin/python
    import my # このように書ける
    #import my.sub
    print my.sub.x
    
    my.sub.setX(256)
    print my.sub.x
    
    my.sub.x = 512
    print my.sub.x
    
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    プログラミング教育者。ScratchやPythonを教えています。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事