MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. プログラミング
  4. Python
  5. 【Python】モジュールを別フォルダでインポートする方法

【Python】モジュールを別フォルダでインポートする方法

2020 5/29
Python
2019年12月27日2020年5月29日

前回、Pythonで別ファイル(モジュール)でプログラムを動かす方法を紹介しました。
今回は、同じフォルダ内ではなく、別フォルダにあるモジュールをインポートしてプログラムを実行する方法を紹介します。

目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

【Python】別フォルダにあるモジュールをインポートしプログラムを実行する方法

Pythonでは別ファイルで分けてプログラムを実行することにより、メンテナンスを安く、プログラムも分割されて見やすくなります。

前回は、同じフォルダ内でのモジュールを使ったプログラムを実行しましたが、以下では別フォルダにあるモジュールを使用したプログラムの実行の仕方を紹介します。

プログラムを実行したいモジュールのフォルダに「__init__.py」を配置する

別フォルダのモジュールをimportするルールとして、「__init__.py」を配置します。
この「__init__.py」はファイルを作成するだけで、中身は何も書かなくても大丈夫です。

__init__.py

また、今回の別フォルダのモジュールを実行するプログラムの階層構成は以下となります。

Python
 |--- __init__.py
 |--- import-test01.py
 |--- import-test03.py
 |--- module02.py
 |--- module04.py
 |--- test
      +
      |--- __init__.py
      |--- import-test02.py
      |--- module01.py
      |--- test2
            +
            |--- __init__.py
            |--- module03.py
            |--- import-test04.py

フォルダ配下のモジュールをインポートしファイルを実行

以下では、「import-test01.py」で一つしたの別フォルダにある「module01.py」をインポートしてプログラムを実行します。

Python
 |--- __init__.py
 |--- import-test01.py
 |--- import-test03.py
 |--- module02.py
 |--- module04.py
 |--- test
      +
      |--- __init__.py
      |--- import-test02.py
      |--- module01.py
      |--- test2
            +
            |--- __init__.py
            |--- module03.py
            |--- import-test04.py

インポートするモジュールの内容は前回のモジュールと同様の内容となります。

※ module01.py

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

※ import-test01.py

from test import module01

sum = module01.add(10, 5)
dif = module01.sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test01.py 
15 5

関数を利用したモジュール名を使用しないプログラム

関数を毎回指定するのがめんどくさい方は以下のようにimportで関数をしてすることで簡単なプログラムを作成することが可能です。

※ import-test01.py

from test.module01 import add, sub

sum = add(10, 5)
dif = sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test01.py 
15 5

一つ以上、下のフォルダにあるモジュールをインポートするプログラム

上記では、別フォルダの一つしたにあるモジュールをインポートするプログラムでしたが、それより下のモジュールをインポートする方法は以下となります。

Python
 |--- __init__.py
 |--- import-test01.py
 |--- import-test03.py
 |--- module02.py
 |--- module04.py
 |--- test
      +
      |--- __init__.py
      |--- import-test02.py
      |--- module01.py
      |--- test2
            +
            |--- __init__.py
            |--- module03.py
            |--- import-test04.py

※ module03.py

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

一つ以上下のフォルダのモジュールをインポートする場合は、「.」を使用します。
今回のインポートするモジュールは「module03」となるため、「test」フォルダのもう一つ下の「test2」フォルダないのモジュールを指定します。

書き方は以下となります。

test.test2

※ import-test03.py

from test.test2 import module03

sum = module03.add(10, 5)
dif = module03.sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test03.py 
15 5

関数を利用したモジュール名を使用しないプログラム

こちらも上記と同じようにimportで関数を指定することにより、いちいちモジュール名を指定せず簡単なプログラムを書くことができます。

※ import-test03.py

from test.test2.module03 import add, sub

sum = add(10, 5)
dif = sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test03.py 
15 5

親ディレクトリ(フォルダ)のモジュールをインポートしファイルを実行

次に親ディレクトリ、一つ上のフォルダを指定してプログラムを実行する方法を紹介します。
一つ上のディレクトリ指定には「import sys」を利用します。

※ 一つ上のフォルダのモジュールを指定するプログラム

import sys
sys.path.append('../')
import module02

また、一つ以上のフォルダ内にあるモジュールを指定するさいは以下のように「(‘../’)」を増やします。

親フォルダの指定例

#1つ上のフォルダ内のモジュールをインポート
import sys
sys.path.append('../')
import module01

#2つ上のフォルダ内のモジュールをインポート
sys.path.append('../../')
import module02

#3つ上のフォルダ内のモジュールをインポート
sys.path.append('../../../')
import module03

一つ上のフォルダのモジュールをインポートしファイルを実行

以下では一つ上のフォルダ内にあるモジュールをインポートしたプログラムとなります。

Python
 |--- __init__.py
 |--- import-test01.py
 |--- import-test03.py
 |--- module02.py
 |--- module04.py
 |--- test
      +
      |--- __init__.py
      |--- import-test02.py
      |--- module01.py
      |--- test2
            +
            |--- __init__.py
            |--- module03.py
            |--- import-test04.py

※ module02.py

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

一つ上のフォルダを指定する際は、「import sys」を指定し、上の階層を指定する場合「(‘../’)」をプログラムに書きます。

※ import-test02.py

import sys
sys.path.append('../')
import module02

sum = module02.add(10, 5)
dif = module02.sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test02.py 
15 5

関数を利用したモジュール名を使用しないプログラム

親ディレクトリ指定でも関数を利用したプログラムを書くことができます。
以下は設定例となります。

※ import-test02.py

import sys
sys.path.append('../')
from module02 import add, sub

sum = add(10, 5)
dif = sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test02.py 
15 5

一つ以上、上のフォルダのモジュールをインポートしファイルを実行

Python
 |--- __init__.py
 |--- import-test01.py
 |--- import-test03.py
 |--- module02.py
 |--- module04.py
 |--- test
      +
      |--- __init__.py
      |--- import-test02.py
      |--- module01.py
      |--- test2
            +
            |--- __init__.py
            |--- module03.py
            |--- import-test04.py

※ module04.py

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

一つ以上、上のフォルダ内のモジュールをインポートする場合は、上記と同じく「import sys」を指定し、「../」を追記します。

※ import-test04.py

import sys
sys.path.append('../../')
import module04

sum = module04.add(10, 5)
dif = module04.sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test04.py 
15 5

関数を利用したモジュール名を使用しないプログラム

同じように関数を利用したプログラムは以下のようになります。

※ import-test04.py

import sys
sys.path.append('../../')
from module04 import add, sub

sum = add(10, 5)
dif = sub(20, 15)
print(sum, dif)

※ 実行結果

$ python3 import-test04.py 
15 5

モジュールを分割してメンテナンスしやすくし、フォルダ別でプログラムをしたい方は是非今回の記事を合わせて参考にしてください。

別ファイル(モジュール)を利用したプログラム作成の記事はこちらから!

あわせて読みたい
【Python】モジュールでプログラムを機能ごとにファイル分割 Pythonでモジュールを利用すると、プログラムを複数のファイルに分割して実行することができます。 コマンドの行数が多くなると一つのファイルにまとめるよりも、ファイ...

モジュール指定は使用することで使いやすのでぜひ活用してください。

エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

Python
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次