【Python】実行ファイルを作成する方法を初心者向けに解説
はじめに
皆さんはPythonでプログラムを書いたときに、ほかの人へ配布したり、スクリプトを簡単に実行できるようにしたいと思ったことはないでしょうか。
Pythonはスクリプト言語として知られ、通常は .py
ファイルをPythonインタープリタに渡して実行します。
しかし、パソコンにPythonが入っていない環境でも簡単に動かせるようにしたい場面や、ワンクリックで動かせる仕組みを用意したい場面があるかもしれません。
そこで役立つのが実行ファイルの作成です。
Pythonスクリプトを実行ファイル化すると、Windowsなら .exe
ファイル、MacやLinuxなら実行権限付きのファイルとして手軽に配布できるようになります。
実務の現場でも、社内ツールをPythonで開発して配布するときに実行ファイル化することはよくあります。
初心者の方は「プログラムをダブルクリックしたら動くようにできるの?」と疑問を抱くかもしれませんが、実は手順を理解すれば意外と簡単です。
このページでは、Pythonで書いたコードを実行ファイル化する方法や活用シーンを段階的に解説します。
この記事を読むとわかること
- Pythonスクリプトを実行する基本的な手順
- 実行ファイル化するメリットと、具体的な方法
- Windows、Mac、Linuxでの実行ファイル作成のポイント
- 実務上で気をつける依存関係や仮想環境の扱い
- GUIアプリケーションを配布するときの考え方
- 実行ファイル化でよくあるトラブルとその解決策
Pythonで実行ファイルを作るメリット
Pythonは使いやすい言語ですが、実行するにはPython自体のインストールが必要という点が特徴です。
そのため、実行環境が整っていないと動かすのは簡単ではありません。
とはいえ、実行ファイル化すると、Pythonが入っていないPCでも実行できるようになることが多いです。
また、以下のようなメリットを感じる場面もあります。
- ほかの人に配布しやすくなる
- スクリプトをダブルクリックだけで動かせる
- インストールレスのツールを提供しやすい
自動化スクリプトや業務用の小さなアプリケーションを配布するときにも、受け取り側の負担が少なくなると考えられます。
実務の現場では、例えば社内の事務作業を自動化するスクリプトを共有するときに、同僚に「Pythonをインストールしてください」と依頼せず、実行ファイルをそのまま渡せばすぐに動かせるというわけです。
これは大変便利です。
ただし、実行ファイル化によってファイルサイズが膨らむことも多く、用途に合わせて取捨選択する必要があります。
Pythonファイルの基本構造
Pythonプログラムを扱ううえで、まずは .py
ファイルの基本構造を理解しておきましょう。
Pythonファイルは拡張子が .py
になっているテキストファイルで、以下のようなイメージで関数や変数などを記述します。
def greet(name): print(f"こんにちは、{name}さん") if __name__ == "__main__": user_name = "太郎" greet(user_name)
上記のコードでは、 greet()
という関数を定義し、その後に __name__ == "__main__"
の条件下で処理を実行しています。
__name__ == "__main__"
という条件式は、Pythonの実行時に「直接このファイルを実行した場合」のみにコードが動く仕組みです。
モジュールとして他のファイルから呼び出されるときには、この部分は実行されません。
初心者の方は「ここが何のためにあるの?」と疑問を持つかもしれません。
これはファイルをモジュールとして再利用したときに不要な処理が勝手に走らないための便利な仕組みです。
また、プログラム冒頭に #!/usr/bin/env python3
のようなShebang行を入れるケースもあります。
これはLinuxやMacでファイルを直接実行するときに「どのインタープリタで実行するか」を指定するためのものです。
WindowsだとShebang行は効力を持たないのですが、Linux系システムを扱う場合は覚えておくと便利です。
Pythonスクリプトを実行する方法
Pythonスクリプトの実行方法は意外と単純です。
多くの環境で以下のようにコマンドを打つだけで実行できます。
python my_script.py
環境によっては python3
というコマンド名の場合もあります。
Windowsユーザーならば、以下のように py
コマンドを使うケースもあります。
py my_script.py
また、ファイルに実行権限を付与しているLinuxやMacの環境では、Shebang行が設定されていれば以下のように実行可能です。
./my_script.py
このように、普通はPythonをインストール済みの環境で .py
ファイルを実行します。
しかし「Pythonが入っていない環境でも動かしたい」となると、話は少し変わります。
そこで出てくるのが実行ファイル化の手順です。
Windowsなら .exe
、MacやLinuxなら実行可能なバイナリとしてスクリプトをまとめる方法が存在します。
次の見出しでは、Windows環境で実行ファイルを作るときの代表的なツールを紹介します。
WindowsでPythonスクリプトを実行形式にする方法
Windows環境でPythonプログラムを .exe
にまとめる際に、よく使われるツールに PyInstaller があります。
ほかにもいくつかのツールが存在しますが、PyInstallerは比較的扱いやすく、シンプルな仕組みです。
実行ファイル化してしまえば、Python未インストールのパソコンでも動かせるケースが大半です。
Pythonで書いた小規模ツールを部署内で共有するときなどに使われることが多いです。
PyInstallerの使い方
PyInstallerを使うには、まずPython環境にPyInstallerをインストールします。
ターミナルやコマンドプロンプトで以下のようにコマンドを打ちます。
pip install pyinstaller
インストールが終わったら、以下のように実行してみましょう。
pyinstaller my_script.py
実行後、しばらく処理が行われると dist
フォルダの中に .exe
ファイルが作成されます。
ファイル名はPythonスクリプトの名前をベースにして生成されるため、たとえば my_script.py
というファイルなら my_script.exe
が生成されるイメージです。
これをダブルクリックすれば、Pythonが入っていないWindowsマシンでも同様の挙動が期待できます。
一部のWindowsマシンではセキュリティソフトが反応することがありますが、これは未知の実行ファイルに対する一般的な対処です。状況によっては信頼できるファイルとして許可を与える必要があるかもしれません。
PyInstallerにはいろいろなオプションが用意されており、 --onefile
をつけると単一ファイルにまとめることができます。
pyinstaller --onefile my_script.py
この場合は、 dist
フォルダに1つの .exe
が生成されるだけになるので、配布しやすいです。
たとえば、エクセルファイルを読み込むPythonスクリプトを同僚に渡すときにも、 .exe
ファイルを共有するだけで実行できるのは便利だと感じるでしょう。
ただし、モジュールがたくさんあるとファイルサイズが大きくなる点には注意が必要です。
実務での応用例
実務の現場でよくあるのは、データ処理や簡単な自動化ツールを .exe
化して配布するパターンです。
例えば以下のような流れがあります。
- 部署内のシステムからCSVを出力
- Pythonスクリプトを使ってCSVの整形や集計を行う
- 整形結果をメールで送信する
こういった作業をワンクリックで済ませたいときに、 .exe
を用意しておけばほかのスタッフもPythonの知識なしに使えるというわけです。
ツールを受け取った側はダブルクリックして実行するだけで良いため、「何をどう設定して、どんなコマンドを打つか」といったハードルを感じずに済みます。
そのため、業務効率化の一環としてPythonスクリプトを実行ファイル化するのは多いに価値があります。
MacやLinuxでの実行ファイル化
MacやLinuxでは、Windowsのように .exe
ファイルを作るのではなく、ファイル自体に実行権限を与えて直接起動する形が多いです。
以下ではMacやLinuxでPythonファイルを実行形式にする際の基本的な手順を紹介します。
Shebangの活用方法
MacやLinuxで .py
ファイルを直接実行できるようにするには、ファイルの先頭行にShebangを記載すると便利です。
例として、ファイルの先頭に下記のように記述します。
#!/usr/bin/env python3 print("こんにちは、Python実行ファイル")
この行は「このスクリプトを起動するときは python3
を使用する」という意味です。
環境によっては #!/usr/bin/python3
などにする場合もあります。
これによって、Pythonを明示的に呼び出さなくても以下のように実行できます。
./my_script.py
chmodコマンドの実行権限付与
さらに、ファイルに実行権限を与える必要があります。
以下のように chmod
コマンドを使って権限を追加します。
chmod +x my_script.py
こうすることで、シェルスクリプトのようにPythonファイルを直接起動できるようになります。
スクリプトを組み込んだ定期実行処理などにも応用可能です。
例えば、Linuxサーバー上で定期的にPythonスクリプトを動かし、ログの解析やファイルのバックアップをする仕組みを作るケースがあります。
MacやLinuxでPythonを活用する場面
MacやLinux環境はサーバー運用でも使われますが、Pythonスクリプトをちょっとしたユーティリティとして扱うこともしばしばあります。
例えば、ローカルマシンで動く小さなツールをPythonで書いて、同僚に渡すイメージです。
こうしたスクリプトはファイル一つで完結することが多いため、Shebangを活用して実行可能ファイル化すると手軽です。
ただし、Windowsとの違いは、「exeファイルを作る」というよりは「スクリプトそのものを実行形式にする」という考え方になります。
MacやLinuxでツールを配布する場合は、実行権限を付与済みのスクリプトをそのまま渡す方法や、Dockerイメージにまとめる方法など、いろいろな形が存在します。
用途によってやりやすいアプローチを選ぶと良いでしょう。
依存関係と仮想環境の管理
Pythonは多くのライブラリを取り込んで使うのが特徴です。
そのため、実行ファイル化をするときにもライブラリの依存関係をきちんと整理しておく必要があります。
たとえば、機械学習や画像処理などで多数のライブラリを使う場合、環境設定が煩雑になることがあります。
venvで環境を分ける意義
Pythonには venv
と呼ばれる標準の仮想環境機能があります。
これはPythonプロジェクトごとにライブラリのバージョンや依存関係を切り分ける仕組みです。
開発時に仮想環境を用いて作業すると、「別のプロジェクトで使ったライブラリのバージョンが干渉してしまう」といったトラブルを防止できます。
実行ファイル化する前にも、プロジェクトごとに仮想環境を使って整理しておけば、ツールの配布がスムーズに進む傾向があります。
実行ファイル作成で気をつけるポイント
PyInstallerなどを利用するときは、仮想環境をアクティベートした状態でインストールしたライブラリが正しく打ち込まれるかを確認すると良いでしょう。
そうすることで、「実行ファイル化した後に動かないモジュールがある」という事態を避けやすくなります。
また、ライブラリが一部だけバイナリ依存のものを含む場合、特定のOSやアーキテクチャでのみ動作するケースもあります。
たとえば、Windowsでビルドした .exe
がMacやLinuxでは動かせないというのは普通のことです。
配布対象のOSが複数にわたる場合は、OSごとに実行ファイルを作成する必要があるかもしれません。
GUIアプリケーションを実行ファイル化するには?
Pythonでは Tkinter
や PyQt
といったライブラリを使ってGUIアプリケーションを作ることもできます。
これらを実行ファイル化すると、より使いやすいツールとして配布できるでしょう。
GUI向けのライブラリとの組み合わせ
たとえば、 PyQt
を使ってウィンドウを作り、ボタンを配置し、ユーザーがボタンを押すと処理が走るような仕組みを作ることが可能です。
そうしたスクリプトを実行ファイル化するには、先ほど紹介したPyInstallerが役立ちます。
コマンドはほぼ同じで、GUI用のオプションを付けるケースもあります。
たとえば、コンソールウィンドウを表示させたくないときには --noconsole
オプションを付ける方法があります。
pyinstaller --onefile --noconsole my_gui_app.py
GUIアプリケーションを渡すと、デスクトップアプリのように取り扱えるため、より直感的に使えるというメリットがあります。
使いやすさと配布のメリット
GUIアプリケーションの実行ファイル化は、プログラムに不慣れなスタッフに渡すときに特に喜ばれます。
日常的にコマンドラインを操作する人は少ないので、ボタンをクリックするだけで操作できる仕組みはわかりやすいです。
実務のシーンで言えば、単にテキスト変換をするだけでも、コマンドラインで渡す方法よりGUIのフォームに入力して変換結果を表示する方が親切でしょう。
このように、GUIアプリケーションをPythonで書いて実行ファイル化すると、コマンド操作に慣れていない人にも配布可能で、幅広い活用が期待できます。
トラブルシューティングのヒント
実行ファイル化したPythonスクリプトを使っていると、いくつかの問題が起こることがあります。
ここでは、よく見られるトラブルと対処方法の例を紹介します。
文字化けが発生する場合
文字列を扱うスクリプトを実行ファイル化した後に、実行時の出力が文字化けすることがあります。
これはエンコードの問題だったり、フォントの問題だったり、さまざまな要因が考えられます。
日本語の文字化けを回避するには、ソースコードで文字コードを明示しておくか、 sys.stdout
のエンコード設定を意識して扱うことがあります。
また、出力先がコンソールの場合はコンソールの文字コード設定が影響するため、そこを確認するのも有効です。
モジュールが見つからない場合
実行ファイル化したあとで「importしたライブラリが見つからない」とエラーメッセージが出ることがあります。
これはPyInstallerなどのツールが依存関係をうまく拾いきれなかった場合や、特殊なインポートの仕方をしている場合に起こりがちです。
そのような場合は、PyInstallerの --hidden-import
オプションを使うことで、手動でモジュールを追加指定できます。
pyinstaller --hidden-import=some_module my_script.py
または、 .spec
ファイルを修正して依存関係を明示的に書き込む方法もあるでしょう。
ライブラリのバージョンが合わない場合
開発環境と配布先の環境でライブラリのバージョンに違いがあると、実行時に問題が発生することがあります。
実行ファイル化しても、外部システムやデータベース接続で別途ライブラリが必要なケースでは、同じバージョンを使わないとエラーが出るかもしれません。
こうした場合、開発環境で動作確認した段階のライブラリがそのまま組み込まれるよう、仮想環境を構築して依存を固定するのが対策として有効です。
配布した実行ファイルがネットワーク上の別サービスと連携する際は、その外部サービスのAPI変更やバージョン違いによって動作が変わる場合もあります。配布後のサポート体制を整えておくことが大切です。
まとめ
ここまで、Pythonのスクリプトを実行ファイル化するための流れや手順、そして実務での活用シーンを解説してきました。
Pythonはスクリプト言語であるがゆえに、実行にはPythonインタープリタが必要です。
しかし、WindowsならPyInstallerなどを使って .exe
化し、MacやLinuxならシェルの実行権限を付与することで、簡単に配布しやすい形へまとめられます。
実行ファイルとしてまとめるメリットは大きく、業務ツールの配布からGUIアプリケーションの提供まで応用可能です。
ただし、依存ライブラリの管理やOSごとのビルド手順には注意が必要です。
配布先の環境を意識しつつ、仮想環境やPyInstallerのオプションなどを上手に活用することがポイントです。
Pythonで「誰でも簡単に使える」ツールを作りたいと考えている方は、今回紹介した内容を参考に一度チャレンジしてみてはいかがでしょうか。
誰でもダブルクリックや簡単な操作だけで機能を利用できる仕組みは、多くの人にとって使い勝手の良いものになると思います。