【Python】プログラムを配布する方法4選!

スポンサーリンク

自作したプログラムを配布したい時ってありますよね。私はPythonであるプログラムを作り、配布したいと思いました。そこで、配布先の人がPythonをインストールしなくても起動できる形式で配布する方法を調べたので紹介します。検索して出てきたのは下の4つで、そのうち3つを試したのでおすすめを紹介します!

配布する方法4選

方法手軽さおすすめ配布ファイル形式
1PyInstallerexe
2Python embeddableフォルダ
3cx_Freezeインストーラー
4py2exe

おすすめ度に関しては、私が今回Tkinterでプログラムを作成したので、Tkinterプログラムを配布する上でのおすすめ度です。

PyInstaller

調べてみた感じ、PyInstallerが一番一般的なのかなと感じました。PyInstallerはプログラムをexe化するものです。なんと実行方法は下の1行のみです。プロンプト上で行います。

  • 初回のみ
pip install pyinstaller
  • PyInstallerインストール完了後
pyinstaller ファイル名 -–onefile -–noconsole

「Hello, World!」を画面に表示させるだけの単純なTkinterプログラムではうまくPyInstallerが機能したことが確認出来ました。おそらくTkinterでなく、CUIのプラグラムもexe化出来ると思います。

しかし、ソースコードが500行以上で容量が24KBのTkinterのプログラムだと、PyInstallerで生成したファイルが起動しませんでした。

ちなみに24KBのコードがexe化すると104MBのexeファイルになりました笑。

ただPyInstallerは本当に手軽なので、簡単なプログラムの場合はとりあえずpyinstallerを試してみて、ダメだったら他の方法を取るようにします。

参考サイト

【Python】pyinstallerでpyファイルを配布用にEXE化する方法 | OFFICE54
Pythonのpyinstallerでpyファイルをexe化する方法について解説しています。pyinstallerのインストール方法から、exe化するまでの手順、pyinstallerのオプションまで詳しく解説しています。

Python embeddable

TkinterのプログラムがPyInstallerでやっても上手く起動しなかったので、Python embeddableを試しました。

Python embeddableはTkinterファイルの場合は少し面倒でした笑。詳しくは参考サイトを見てください。手順は

  1. Windows x86-64 embeddable zip fileのインストール
  2. cmdファイルとプログラムファイルを上のファイルに入れる
  3. (Tkinterの場合)PythonのProgramファイルからTkinterのモジュールファイル?を上のファイルに入れる

という感じです。cmdファイルのソースコードは短かいので手間ではないです。

cd /d %~dp0
python.exe (ファイル名).py

Python embeddableはexe化するものではありません。Pythonの標準モジュールが集まったファイル内で起動します。配布するファイル数は多くなりますが、相手がPythonをインストールする必要はありません。

ちなみに、Tkinterで「Hello, World!」を表示させるだけの単純なプラグラムでさえもうまく動作しませんでした泣。理由は、ソースコードを最後まで読んだ後、コマンドプロンプトが自動的に閉じてしまい、Tkinterのウィンドウも同時に閉じてしまうからです。

さらに、ソースコードが500行以上で24KBのTkinterのプラグラムをPython embeddableに入れて実行したところ、Tkinterのモジュールを入れたはずなのに、Tkinterが入っていないというエラーが出ました泣。この場合、24KBのソースコードを配布ファイルにすると80MBになりました。

参考サイト

Python環境がない人に実行スクリプトを配布する
田中太郎 Python環境がない人にPythonで作ったモジュールを渡す、Python embeddableを紹介します! はじめに Pythonですごい便利なスクリプトを作成して配布しても、相手にPython環境がなければ使ってもらえませ
Python embeddable でTkinterを使用する
田中太郎 Python embeddable でTkinter を使用するときハマったので備忘録を残します。 はじめに Python embeddable を公式サイトからダウンロードすると、デフォルトではTkinterは入っていません(2

cx_Freeze

PyInstallerもPython embeddableでもTlinterプログラムを配布ファイルに出来なかったのでcx_Freezeを試しました。結論から言うとcx_Freezeで無事にTkinterプラグラムをインストーラー化することが出来ました!kotai2003さん、ありがとうございました!方法は以下の通りです。(Anaconda環境の場合)

  1. (初回のみ)cx_Freezeのインストール
conda install -c conda-forge cx_freeze
  1. setupファイルの作成
import sys
from cx_Freeze import setup, Executable

base = None
if sys.platform == 'win32':
    base = 'Win32GUI'

executables = [
    Executable('(プログラムファイル名).py', base=base)
]

setup(name='(インストーラー名)',
      version='0.2',
      description='Sample cx_Freeze Tkinter script',
      executables=executables
      )
  1. プロンプト上でsetupファイルの起動
python setup.py bdist_msi

ちなみに24KBのコードがexe化すると493MBのインストーラーになりました笑。

そしてインストーラーを起動すると「lib」というファイル1つとexeファイル1つとdllファイルが2つ生成しました。4つの合計の容量は1.37GBです笑。デカ過ぎ笑。

そして、生成したexeファイルを起動してみると

こんなエラーが泣。

これが出てしまった場合はMicrosoftサイトからvcredist_x64.exeをダウンロードすれば大丈夫です!

ダウンロードすると無事にエラーが消えました。配布する時は、取扱説明書に上記のエラーの対処法も書いておいた方がいいでしょう。

参考サイト

[Python] cx_FreezeでTkinterのプログラムの配布ファイルを作成する - Qiita
1. はじめにTkinterで作ったGUIプログラムを、配布するときに、exe実行ファイルよりInstallerとして渡したほうがいいと思います。cx_Freezeにその機能があったので、それを試…
【対処法】VCRUNTIME140.dll が見つからないため、コードの実行を続行できません。 | ハルパス
「VCRUNTIME140.dll が見つからないため、コードの実行を続行できません。プログラムを再インストールすると、この問題が解決する可能性があります。」と表示されてプログラム...

py2exe

PyInstallerの参考サイトに載っていましたが、試すところまでいっていません。上記の3つの方法でもダメだった場合に試してみてはどうでしょうか?

まとめ

PyInstallerとPython emmbeddableとcx_FreezeでTkinterプラグラムを配布ファイルにしてみました。

単純なプラグラムはPyInstallerでexe化し、複雑なTkinterファイルはcx_Freezeでインストーラーを生成するのがいいと思いました。

コメント

タイトルとURLをコピーしました