Pythonで作ったプログラム(スクリプト)からexeファイルを作る方法

- システム
エンジニア - Pythonをインストールしていない環境でもPythonのプログラムを動かす方法はありますか。
- プロジェクト
マネージャー - ありますよ。exeファイルを作るとPythonのプログラムを動かすことができます。
Pythonコードのexeファイルを作る
Pythonで作ったプログラムをPythonがインストールされていない環境で動かしたい場合はどうしたらよいでしょうか。答えのひとつに「exeファイルを作る」という方法があります。exeファイルを作れれば、わざわざPythonをインストールする必要がなくなります。
ここではPythonで作ったプログラム(スクリプト)からexeファイルを作る方法を紹介します。
exeファイルを作る方法として紹介するexeファイル変換プログラムは2種類あり、ひとつはPyInstaller、もうひとつはcx_Freezeです。
PyInstallerはひとつのexeファイルを作成できるのでおすすめですが、欠点はファイルサイズが比較的大きくなってしまうのと実行時間が比較的長くなってしまいます。その点cx_Freeseは比較的悪くないようですが、実行時に必要なファイルが沢山できてしまいます。
どちらも長所・短所がありますし、環境によっては不具合が出る可能性もありますので上手に使い分けた方が良いでしょう。
ここで使用するOSはWindows10およびLinux(Ubuntu20.10)でPythonのバージョンはどちらも3.9.1です。
PyInstallerを使ってexeファイルを作る
まずはPyInstallerという変換プログラムを使ってexeファイルを作ってみることにします。
PyInstallerのインストールは下記のコマンドを実行してインストールします。なお、下記のコマンドを実行してインストールされたPyInstallerのバージョンはWindows、Ubuntu共に4.2でした。
Ubuntuの場合、インストール後にpyinstallerを実行しても起動しない場合にはコンピュータを再起動する必要があります。
下記コマンドはWindowsおよびUbuntu共通です。
1
|
pip install pyinstaller
|
変換に使用するPythonのサンプルプログラム
とりあえず下記のような簡単なプログラムを用意します。ファイル名はsample1.pyとします。
1
2
|
# ファイル名をsample1.pyとして保存してください
print("Hello World!!")
|
exeファイルを作ってみる
PyInstallerをインストールして、sample1.pyを用意できたら実際にexeファイルを作ってみます。下記のコマンドを実行してみてください。
オプションに指定している「–onefile」はひとつのexeファイルを作るという意味のオプションスイッチです。試しにこれを外してexeファイルを作成すると、exeファイル以外にも沢山のファイルが作成されてしまいます。
コマンドを実行するとdistフォルダが作成されて、その中にWindowsの場合sample1.exeが、Ubuntuの場合sample1が作成されます。
下記コマンドはWindowsおよびUbuntuで共通です。
1
|
pyinstaller sample1.py --onefile
|
exeファイルが大きくなってしまったときは
PyInstallerはインストールされているモジュールをすべて含んだファイルを作成するため、沢山のモジュールをインストールした環境(Anaconda等)では巨大ファイルになりがちです。
対策としては仮想環境を作って「必要最低限のモジュールのみをインストールする」方法があります。仮想環境を作るひとつの方法としてpipenvコマンドを利用できます。pipenvコマンドは下記のコマンドでインストールできます。
下記コマンドの①はWindows、②はUbuntuのコマンドです。
1
2
|
①pip install pipenv
②sudo apt install pipenv
|
pipenvコマンドの使い方
pipenvコマンドは実行するフォルダ毎に管理されます。
そのため、まずは作業用フォルダを作成してそのフォルダにカレントフォルダを移動します。その後、pipenvに使用するPythonのバージョンを設定(環境ファイル&フォルダが作成されます)し、pipenvで作成される仮想環境(shell)を起動します。
ここまで①~④のコマンドを実行してください。フォルダ名とPythonのバージョンは使用環境に合わせて適切に指定してください。
仮想環境のシェルを起動したら、必要なモジュール(ライブラリ)をインストールしましょう(⑤を必要なだけ繰り返してください)。
①~⑤で環境が整ったら⑥でexeファイルを作成しましょう。
なお、Ubuntuで⑤のパッケージがインストールできないときは、その対策として⑦~⑨のコマンドを実行後に⑤を実行してみてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
①mkdir pywork
②cd pywork
③pipenv --python 3.9
④pipenv shell
⑤pipenv install [パッケージ名]
(例)pipenv install numpy
⑥pyinstaller [スクリプトファイル名] --onefile
⑦wget https://bootstrap.pypa.io/get-pip.py
⑧python get-pip.py
⑨python3 get-pip.py
|
cx_Freezeを使ってexeファイルを作成する
インストールは下記のコマンドを実行してください(①はWindows、②はUbuntuのコマンドです)。なお、cx_Freezeはバージョンにより対応するPythonのバージョンが異なりますのでご注意ください。
1
2
|
①python -m pip install cx_Freeze
②python3 -m pip install cx_Freeze
|
変換に使用するPythonのサンプルプログラム
とりあえず下記のような簡単なプログラムを用意します。ファイル名はsample2.pyとします。
1
2
|
# ファイル名をsample2.pyとして保存してください
print("Hello World!! 2")
|
「setup.py」を作る
下記のファイルはWindows、Ubuntu共に共通で使用できるスクリプトファイルです。ファイル名(sample2)の文字列(2カ所)を適宜変更してご使用ください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# cx_Freeze6.5.3、Python3.9.1で動作確認しました。
# cx_Freeze、実行ファイル作成用
import sys
from cx_Freeze import setup, Executable
base = None
# Ubuntuの場合、sys.platform='linux'です
# GUI=有効, CUI=無効 にする
# if sys.platform == 'win32' : base = 'Win32GUI'
# 実行ファイルにしたいPythonスクリプトファイルを指定
exe = Executable(script = 'sample2.py', base = base)
# セットアップ
setup(name = 'sample2',
version = '0.1',
description = 'converter',
executables = [exe])
|
cx_Freezeでexeファイルを作る
下記コマンドを実行してexeファイルを作成してください(①はWindows、②はUbuntuのコマンドです)。
上手く作成されれば、build以下のフォルダにexeファイル(実行可能ファイル)一式が格納されています。
1
2
|
①python setup.py build
②python3 setup.py build
|
Pythonでのexeファイルの作り方
以上、PyInstallerとcx_Freezeを用いたexeファイルに変換する例を紹介しましたが、他にもexeファイルに変換できるプログラムはいくつかあります。
もし速度的に不満があるようでしたら、ここでは紹介しませんでしたがpy2exeというプログラムがあります。py2exeは利用しているPythonのバージョンによって、使用できるバージョンが異なることがありますのでご注意ください。
- システム
エンジニア - Pythonをインストールしていない環境でもPythonのプログラムを動かすことができるのですね。
- プロジェクト
マネージャー - PyInstallerやcx_Freezeを使ってexeファイルを作成することができますので、参考にしてください。
最後に
いずれの変換プログラムも長所・短所がありますし、不具合もあると考えた方が良いでしょう。しかしPythonをインストールしていなくても、よく使うPythonで作ったプログラムが動くというのは魅力的です。上手に使えるようになりましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Python新着案件New Job
-
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都豊島区(池袋駅) -
マルチロガーソフト開発/東京都豊島区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都豊島区(池袋駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅) -
商品化予定の振動センサーの運用保守/Python/東京都都内/【WEB面談可】
月給50万~60万円東京都都内(-駅) -
商品化予定の振動センサーの可視化UI開発のテスター/Python/東京都都内/【WEB面談可】
月給25万~35万円東京都都内(-駅)