見出し画像

【解決】Pythonを.exeにするのに悪戦苦闘した話。

数日かけて書き続けたpythonのプログラムがついに完成しました。
折角なら配布したいなぁ・・・と考えて.exeにしようと試みます。
これが案外難しいとは知らずに・・・。

以下に時系列順に取った方法をまとめます。
これが誰かの役に立ちますように。

1,pyinstallerを使う

定番らしいです。ネットで検索するとこれを用いた方法しか書いてありません。早速、pyinstallerをインストールします。

pip install pyinstaller

無事完了。さて、pyinstallerを使いますか。
どれどれ? pyinstallerを使うには・・・

pyinstaller (pythonファイル名)

とすればよいみたい。
([注] 事前にcdコマンドでディレクトリを指定する必要がある)
早速やってみよう!

pyinstallerが認識されない

・・・えっ!
おかしいな、

pip list

だとpyinstallerの存在が確認できるのに・・・。
仕方がないのでpyinstaller.exeをファイルパスを指定することで直接実行します。pyinstaller.exeはどうやらここにあるようです。

C:\Users\(ユーザー名)\AppData\Local\packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts

しかし、これでも上手くいかない。
厳密に言うと、pyinstallerの実行こそできるものの、上手く.exe化できないのです。困りました。
他の方法を試してみます。

2,cx_Freezeを使う

色々調べてみると、cx_Freezeなるものがあるらしいです。試してみましょう。まずは、cx_Freezeをインストールします。

pip install cx_Freeze

次に、setup.pyを作成する必要があるようです。

from cx_Freeze import setup, Executable

# "my_script.py" の部分をご自身のpythonファイル名に置き換えてください
executables = [Executable("my_script.py")]

setup(
    name="my_script",
    version="0.1",
    description="My Python script converted to exe",
    executables=executables
)

そして、指定ディレクトリ内でsetup.pyを実行します。

python setup.py build

なるほど、実行すると確かに「build」という名前のファイルが作成され、中を見るとちゃんとexeファイルが入っています。しかし、やっぱりちゃんと実行してくれません。困りました。

3,auto-py-to-exeを使う

世の中には便利なものがあるものです。「auto-py-to-exe」と言いまして、どうやらGUIを操作しながらexeファイルを生成できる模様。やってみます。
例にもれず、インストールから始まります。

pip install auto-py-to-exe

続いて、auto-py-to-exeを実行します。コマンドプロンプト上で

auto-py-to-exe

と打ち込むことで実行出来たら楽なのでしょうが、何故か上手くいかないので、直接ファイルパスを指定して実行します。

C:\Users\(ユーザー名)\AppData\Local\packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\Scripts\autopytoexe.exe

無事、実行できました。このようなGUIが表示されます。

auto-py-to-exe

あとは感覚的に操作するだけでexeファイルが生成されます。出力されるexeファイルは、Scriptsフォルダ内のoutputフォルダ内にありました。

問題はこのexeファイルが無事機能するかですが・・・
問題なく機能しました!

ネット上を見ても同様の問題を抱えている人は少ないようで、この記事がどれだけ役に立つかは未知数ですが、備忘録として一応残しておきます。私自身、上記の過程でpythonのアンインストールをするなどして相当の時間を費やしてしまいました(たぶん無意味)。一人でも多くの人が同じ轍を踏まないことに意味があると思うのです。


この記事が気に入ったらサポートをしてみませんか?