【Python】「.py」をexeファイルに変更する方法!エラーになる方必読


Pythonのプログラムを作成する際に、そのプログラムをWindowsの環境で実行したいと思うはず。
そもそも、Pythonが動いている環境下では「.py」のプログラムは実行できますが、環境がない場合は動きません。

このPythonで作成したプログラムを実行するには、Pythonを導入してない環境で作成したプログラムを実行するには、OSに合わせた拡張子の変更が必要となります。
そんな時に役に立つのが、Pythonモジュールの「pyinstaller」です。


Windows環境下で動作するように「.py」のファイルを「.exe」に変更する「pyinstaller」

そもそも「exe」ファイルですが、何かというと、Windows環境下で使われることが多い実行ファイルです。
Pythonでは拡張子が「.py」なので、このファイルをWindowsでそのまま使っても動きません。

ですので、Windows環境下で動かせるように「exe」ファイルに変更するようにするのが、「pyinstaller」となります。

pyinstallerインストール

pyinstallerのインストールは以下となります。

  1. 「Winマーク+R」を押し、「ファイル名を指定して実行」を表示 ⇒ 「cmd」と入力
  2. コマンドプロンプトを起動し、以下コマンドを実行
pip install pyinstaller


pyinstaller実行

pyinstallerをインストール後は、対象のファイルをexeファイル化するためのコマンドを実行します。

pyinstaller test.py
-
-
-
21990 INFO: Building EXE from EXE-00.toc completed successfully.

上記のように「successfully」となれば、同じフォルダ内に「dist」フォルダが作成され、その配下に対象のexeファイルができています。

exeファイルを一つにする方法

pyinstallerで実行したexeファイルは複数ファイルのフォルダ内に作成されます。
このフォルダ内のファイルをまとめて、一つのexeファイルにしたい場合は以下のコマンドを実行します。

pyinstaller test.py --onefile
-
-
-
21990 INFO: Building EXE from EXE-00.toc completed successfully.

以上がPythonプログラムファイルのexeファイル化の流れとなります。

最新Verの「pyinstaller」ではエラーが発生する

新バージョンのPython「3.8」をインストールし、「pyinstaller」を実行したけど、エラーが表示され、exeファイル化ができないということはないでしょうか。

Windowsのexeファイル化でエラー

TypeError: an integer is required (got type bytes)

この「pyinstaller」は現在、Python3.6までしかサポートがされていません。
そのため、Python3.8環境下で「pyinstaller」を動かすとエラーが吐かれてしまい、exeファイルが作成されません。

「pyinstaller」を動かす方法

それでは、「pyinstaller」を動かす方法ですが、まずはバージョンの低い、Python3.6をインストールしましょう。
pyinstallerは現在、Python3.6までサポートしています。

3.6のダウンロードは以下URLで落としてください。
https://www.python.org/downloads/

ちなみにPythonのインストール手順は以下となります。

【Python】インストールと起動(Windows)

2019年11月26日

Python3.6のインストールが完了したら、exeファイル化したい「.py」ファイルの頭に以下のように設定を入れます。

#!python3.6

#!python3.6
print(1 + 2)

これで、上記のコマンドで「pyinstaller」をたたけば成功しますよ。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!