今回はPythonで、ファイル冒頭にずらーっと続くimport文だけを別ファイルにモジュール化して使用・再利用する方法を簡単に説明します。
Contents
やりたいこと:毎回書く多くのimport文を1つにまとめたい
Pythonでスクレイピングやデータの統計的な分析などをする場合、毎回同じようなモジュールやライブラリを使って、ファイル冒頭にimport文がたくさんずらずらと並ぶ・・・ということがあると思います。
たとえば、スクレイピングをするPytonプログラムでは、次のような感じでimportが連なると思います。
# あくまでただの例です
import requests
import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
import time
import csv
import re #正規表現モジュール
そして新しいWEBサイトをスクレイピングするプログラムを作るたびに、これを書くことになります。それは非常に面倒ですね。毎回同じことを書くのならば、サクっとそれが終わるようにしたいですね。またimport文が長く続くと見た目もややこしいですね。
(各サイトに対応した処理をクラス化したり、関数化したりして、それをimportして使うというのがプロっぽいやり方でしょうが)
その1つの方法として、もちろんテキストファイルやエクセルのファイルなどによく使うimport文の塊(パターン)を保存しておいて、そこからコピペして使うやり方もあります。
ですが、やはりPythonらしく(?)、できるだけPythonを使った方法にしたいですね。
そこで今回はモジュール化という方法でそれを実現してみましょう。
多いimport文を別ファイルにまとめてモジュール化して使う方法
注意点
今回の解説は、初心者・入門者向けての記事であって、説明内容を簡単にするため、
- パッケージ化という手法は取らない
- モジュール化したファイルと、それを使うファイルを同じディレクトリ(フォルダ)に保存する
ということを前提としています。
この点に注意してください。
作業1:新しい別のPythonファイルの作成
まず、新しいPythonファイル(拡張子が「.py」)を作成しましょう。仮に、そのファイル名をimported_items.pyとします。
また、そのimported_items.pyをインポートして使うPythonファイルを、仮にXXX.pyとします。
このXXX.pyとimported_items.pyとの関係ですが、つまるところXXX.pyの中に、
import imported_items
と書いて使うという関係です。
そして、よく使うimport文の塊をそのimported_items.py内に記述します。
作業2:保存場所の確認
次にそのファイルをXXX.pyと同じフォルダに保存します。
このとき、ひょっとするとPythonの作業フォルダ(カレントフォルダ)が、XXX.pyと異なっているかもしれません。
そのため、念のため次のコードを使って、作業フォルダを確かめてみましょう。
import os
print(os.getcwd())
これで、XXX.pyがある場所と同じ場所が表示されていればいいですが、それが異なる場合は、作業フォルダをXXX.pyへと変更させましょう。
変更させる方法は、
# 下の~には、XXX.pyがあるパスを書く(相対パスまたは絶対パス)
os.chdir('~')
となります。相対パス、絶対パスについての解説やPythonでの書き方は今回は省略します。
これで、XXX.pyと作業フォルダが一致します。このように両者を一致させてから今回の作業を進めて下さい。
作業3:インポートして使う方法
あとはいつものようにインポートするだけですが、上述のように、必ずimported_items.pyファイルの保存場所と、作業フォルダの場所を一致させてから使ってください。
それができれば、XXX.pyの中に、
from imported_items import requests, pd, BeautifulSoup, webdriver, Options, os, time, csv, re
と書きましょう。
重要なのは、importの後の部分です。
requests, pd, BeautifulSoup, webdriver, Options, os, time, csv, re
このように文字を並べていますが、これらは全てimported_items.py内部でインポートされたモジュールなどの名前です。これをimportの後に全て書き出さないとXXX.pyは上手く動きません。
さて、以上のようにして、XXX.pyではモジュール化したimported_items.pyを使うことができるようになります。
これで毎回、長くimport文を羅列しなくても、
from imported_items import requests, pd, BeautifulSoup, webdriver, Options, os, time, csv, re
たったこれだけでの記述でOKとなりました。
今回の解説では、imported_items.pyとそれを利用するXXX.pyを同じフォルダに置いた場合の説明でしたが、もちろん通常の標準ライブラリ・モジュールが入っているフォルダにimported_items.pyを保存し、それを使うことも可能です。
しかし、その場合は確認すべきことや作業が増えるため、今回は最もシンプルな「利用するファイルとされるファイルが同じフォルダ」という設定にしました。
今回はモジュール化とその使い方について最も単純な場合の説明でしたが、他にももう少しレベルの高い使い方、応用的な使い方が複数あります。この記事を機会に勉強してもらえると、どんどん効率的にプログラムが書けるようになり、自分の成長が楽しくなると思います。
プログラミングを学びIT業界へ転職するなら現役エンジニアから学べるプログラミングスクールTechAcademy [テックアカデミー]でオンライン講座を受講するのが良いと思います。1人で悩みながら学習を進めるよりもわかりやすく、費やす時間も少なく合理的・効率的に学習できるからです。
など各種の講座が用意されています。無料で体験できるテックアカデミー無料体験も用意されています。