本記事ではPythonでアプリ化する方法を解説します。
Pythonでアプリ化する際にはPyinstallerライブラリを使用します。
アプリ化のメリット
アプリ化のメリットは主に下記の二点です。
- Pythonやライブラリをインストールしなくとも実行できる
- クリックで起動できる(コマンドプロンプトやWindows PowerShellを使う必要がない)
これらがどう便利なのか考えてみましょう。
もし、あなたがPythonで作成したコードを知り合いに配りたいと考えた場合、まず最初に思い浮かぶ方法は
- Pythonコードを配る
- 環境準備方法(Pythonやライブラリのインストール方法)を伝え、その通りに実行してもらう
- コードの実行方法(コマンドプロンプトやWindows PowerShellの起動方法、仮想環境の有効化、Pythonの起動)を伝え、実行してもらう
という方法です。もちろん、その知り合いがプログラミングに詳しければ上記の手順でも問題ないでしょう。
しかし、インストールの手順やコマンドプロンプトからの起動方法などを多くの人はしらないので、プログラミングに詳しくない人に先ほどのような手順を実行してもらうのは案外難しいです。
そんな時にアプリ化をしてexeファイルとして配布すれば、相手はただexeファイルをクリックするだけで処理を実行できます。
Pyinstallerの準備
ではPyinstallerを準備しましょう。コマンドプロンプトかWindows PowerShellを起動して下記コマンドでPyinstallerのインストールが可能です。
pip install pyinstaller
アプリ化の実行
Pyinstallerの準備が完了したらさっそくアプリ化を実行してみましょう。
下記でスクレイピングに必要なライブラリをインストールします。
pip install requests bs4
試しに下記のコードをアプリ化することを考えます。
下記はYahoo newsのタイトルを一覧化しファイルに保存する処理を行っています。
# ①ライブラリのインポート
import requests
from bs4 import BeautifulSoup
# ①yahoo newsの取得
url = 'https://news.yahoo.co.jp/topics/top-picks'
res = requests.get(url)
# ③yahoo newsのパースしタイトルのみをリスト化
soup = BeautifulSoup(res.content, "lxml", from_encoding='utf-8')
title_l = []
for i, item in enumerate(soup.select('.newsFeed_item'), 1):
if title := item.select_one('.newsFeed_item_title'):
title_l.append(title.text+'\n')
# ④yahoo newsタイトル一覧をファイルに保存
with open("title.txt", mode="a", encoding='utf-8', newline='\n') as f:
f.writelines(title_l)
- ①ライブラリのインポート
ライブラリをインポートする
- ②yahoo newsの取得
yahoo newsのURLから記事を取得する
- ③yahoo newsのパースしタイトルのみをリスト化
yahoo newsのタイトルのみを抽出します。
詳しくはこちらの記事で解説しております。 - ④yahoo newsタイトル一覧をファイルに保存
title.txtという名前のファイルで先ほどのタイトル一覧を保存しております。
上記のファイルを作成したら下記コマンドをコマンドプロンプトかWindows PowerShellから実行してアプリ化を実行します。
pyinstaller main.py --onefile
pyinstallerの第一引数にはアプリ化したいファイル名を指定します。そして–onefileというオプションを付与します。これは関連するファイルをひとまとめにするという意味です。
上記を実行すると、同じ階層にdist
フォルダが作成され、その中にアプリが作成されます。今回であればmain.exe
という名前で作成されています。

アプリ化の方法は以上です。アプリ化を覚えておくと、自分で作ったコードを社内の人に配ることも容易になるので、業務効率化に非常に役立ちます!

