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

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

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

目次目次を開く/閉じる

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

モーダルを閉じる

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

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

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

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

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

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

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

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

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

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

  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 コンセプト画像

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

    ログインする

    関連記事