【Python】exe化の方法と各ライブラリは商用利用可能なのか

当サイトで紹介する商品・サービス等の外部リンクは、アフィリエイト広告を含む場合があります。
スポンサーリンク

Pythonは、現在流行の人工知能の他にも、データサイエンスやIoTとハードウェア制御、ゲーム・ウェブ開発まで可能な汎用性の高い言語です。
さらに、各大学や研究機関でもPythonは使用されて魅力ある言語です。

しかし、HTML・CSS・JavaScriptのようなフロントエンド言語とは異なり、
Pythonは各自のPCにインストールしないと使用することができません。
(※公式ページよりダウンロード可能)

Jupyter Notebook (Google Colab)はブラウザ上で、
データサイエンス、機械学習を体験することができますが、Tkinterゲーム開発は実行できません。

以上のようにPythonの環境を自身のPCに取り入れなければならず、
Pythonを扱わない人にソースコードを提供しても実行することはできません。

しかし、ソースコードをexe化することで、環境が整っていない場合でも、
処理を行うことが可能です。

exeファイルはWindowsのPCであれば、PythonをインストールしていないPCでも実行させることができます。要するに、多くのユーザーに向けて自分で制作したソフトを配布・販売することができます。

また、Pythonに標準搭載されているGUIライブラリ「Tkinter」とexe化は非常に相性が良いです。

Pynstaller、py2exe、Nuitka、cx_Freezeなどソースコードをexe化するライブラリがありますが、
それぞれのライブラリにライセンスがあり、商用利用可能か否か判断しなければいけません。

本記事では、Pythonのファイルをexe化する方法を紹介します。

本記事は次の人におすすめ
  • Tkinterについて知りたい。
  • Pythonをexe化する方法を知りたい。
  • Pythonで作ったソフトを配布・販売したい。
  • シェルを使わずにPythonを動かしたい。
  • pynstallerのインストール方法を知りたい。
Udemyで学習する
スポンサーリンク

Tkinterとは

Tkinterは、Pythonの標準ライブラリで、GUIアプリケーションを作成するためのツールキットです。
Tkinterは、Tcl/TkをラップしてPythonから利用できるようにしたもので、Pythonのクロスプラットフォーム性を維持しながら、シンプルで使いやすいGUIアプリケーションを作成できます。

Tkinterは、ボタン、ラベル、テキストボックス、スクロールバー、メニューなどのウィジェットを提供し、これらを自由に配置してGUIアプリケーションを構築することができます。
また、ウィンドウのサイズや色、フォントなどのカスタマイズも可能です。

tkinterのボタンについてまとめています。
tkinterのラベルについてまとめています。

Tkinterは、Pythonの標準ライブラリに含まれているため、Pythonをインストールすると自動的に使用できます。初心者から上級者まで、幅広いレベルのプログラマーにとって使いやすいGUI開発ツールキットです。

またTkinterは、画面遷移(画面切り替え)を使えば、より本格的なアプリを作成することができます。

tkinterの画面遷移を使って、カウントダウンタイマーを作成しています。

公式サイト:「tkinter — Tcl/Tk の Python インターフェース

exe化・exeファイルとは

.exeファイルとは、Windowsオペレーティングシステムで実行可能なプログラムファイルです。
「exe」は「executable」の略で、コンピュータで実行される指示や命令を含むファイルです。

一般的に、exe化は、Windows用のプログラムを開発する際に使用されます。開発者は、プログラムをexeファイルに変換することで、ユーザーがソフトウェアを簡単にインストールし、Windows上でアプリケーションを実行できるようにします。

また、exeファイルは、様々なセキュリティ機能を実装することができ、不正なコードの実行を防止することもできます。

※参考ページ:「exeファイルとは

MacOSでexeファイル実行する方法

exeファイルはWindows用のプログラム拡張子なので、Macでは動作しません。
ただし、Macでも、exeファイルを起動させる方法があります。

  • 「Wine」をインストールしてexeファイルを開く。
  • 「VirtualBox」や「BootCamp」などを利用してWindowsの仮想環境を構築。

参考ページ:「macOSでEXEファイルを実行する方法と消えたEXEファイルを復元する方法

Wine」はmacOSやLinuxをUnix系オペレーティングシステム上でWindowsアプリケーションを実行するためのプログラムで、Windowsアプリケーションが依存するAPI(Application Programming Interface)を再現し、Windows以外のプラットフォームでも動作させることができます。

また、「VirtualBox」や「BootCamp」はどちらも仮想のWindows環境を構築します。

しかし、個人的な意見としては、macOSでWindowsの仮想環境を起動させるために、
自分自身で下調べをして動作させるというリスクが伴います
また、CPUやメモリに負荷がかけて、内蔵ストレージ容量も取ります。

macOSでexeファイルを稼働させることにメリットが見つからないので、
macOSでWindowsの仮想環境を構築するのは控え方が良いです。

exe化のメリット

Pythonのexe化することで以下のようなメリットがあります。

  • PythonをインストールしていないPCでも手軽に実行できる。
  • ユーザーにPythonの知識がなくても実行できる。
  • 実行速度が向上する場合がある。
  • 配布が容易になる。

Python環境が構築をされていないPCで起動

Pythonは「jupyter」や「Google Colaboratory」のようなにブラウザ上でPythonを実行させることができて便利ですが、これらのプラットフォームに依存しているため、「Tkinter」が使えないといった注意点があります。
したがって、大型のPythonスクリプトを実行させることはあまり向いていません。
また、前述したようにPythonを動かすには基本的にPythonをインストールしなければいけません。

さらに、Pythonを日常的に扱う人は、既にPCへPythonの環境を構築しているかと思いますが、普段Pythonを使わない人にスクリプトを渡しても、受け取った人のPCにPythonがインストールされていないことは十分に考えられます。

しかし、exe化することでこのようなこのような懸念は解消させます。

スクリプトをexe化することでPCにPythonをインストールする必要がなくなり、手軽に実行できるようになります。したがって、Python環境を構築していない受け取った人もスクリプトを動かすことができます。

Pythonの知識不要

Pythonは、「Tkinter」をはじめ標準ライブラリだけでも豊富な機能を持っていますが、さらに、Webアプリケーション開発のためのDjangoやFlask、データ分析のためのNumPyやpandas、機械学習のためのTensorFlowやPyTorchなど、さまざまな分野で使える豊富なライブラリが利用できます。

しかし、これほど豊富なライブラリを抱えていると、どのライブラリがどんな場面で使えばよいかと知識が必要になり、これらもPythonと同様にインストールが必須となります。

PythonをVScodeやコマンドプロンプトなどのシェルから動作させるとき、実行するコマンドを入力しなければいけません。exe化によって、プログラムを配布する場合も、Pythonのインストールや環境設定など難しいコマンド入力をユーザーに求めることがないため、利用者の負担が軽減されます。

実行速度の向上

Pythonはインタープリタ言語であるため、実行速度が遅いという欠点があります。しかし、exe化することで、Pythonのスクリプトをバイトコードに変換し、それを実行することができるようになります。そのため、実行速度が向上する場合があります。

UdemyでPythonを学習

Udemyは、オンデマンド式の学習講座です。
趣味から実務まで使えるおすすめの講座を紹介します。




exe化するライブラリ

Pythonをexe化するライブラリは前述したようにPyInstaller、py2exe、Nuitka、cx_Freezeなどが存在します。

これらのライブラリは、Pythonスクリプトを実行可能ファイルに変換するための異なる方法を提供しています。選択するライブラリは、必要な機能や環境に合わせて選択する必要があります。

PyInstaller

PyInstallerは、最も王道なexe化するライブラリで、Pythonスクリプトを単一の実行可能ファイルに変換するためのツールです。多くの依存関係を解決し、パッケージを作成するために必要なすべてのファイルを含む実行可能ファイルを作成します。
また、新しいPythonのバージョンにも対応しています。

インストールするには、コマンドプロンプトで次のように入力が必要です。

pip install pyinstaller

公式サイト:「PyInstaller Manual

PyInstallerは商用利用可能?

PyInstallerをインストールしたもの配布や販売(商用利用)に使用してよいのか気になっているかと思います。

以下に、PyInstallerのライセンスの一部を抜粋して引用しています。
詳細は引用先のURLから各自で確認してください。

PyInstallerを使用して商用アプリケーションをバンドルすることができます。
バンドルとは、複数の製品やサービスを一括してパッケージ化して提供することです。
例えば、PCやスマートフォンはOSとアプリのソフトウェアがあります。

PyInstallerソースコードの変更も可能です。
ただし、GPLライセンスの条件の下で行う必要があります。
変更を配布する場合は、GPL条項の下で配布しなければいけません。

You may use PyInstaller to bundle commercial applications out of your
source code.

The executable bundles generated by PyInstaller from your source code
can be shipped with whatever license you want, as long as it complies with the licenses of your dependencies.

You may modify PyInstaller for your own needs but changes to the
PyInstaller source code fall under the terms of the GPL license. That is, if you distribute your modifications you must distribute them under GPL terms.

PyInstaller-License

py2exe

Pythonスクリプトが依存するすべてのライブラリを含む単一の実行可能ファイルを作成します。ただし、Linux、Mac OS Xなどのプラットフォームには非対応で、Windowsにのみ対応しています。また、一部の非搭載ライブラリとの統合に問題がある場合があります。

インストールするには、コマンドプロンプトで次のように入力が必要です。

pip install py2exe

公式サイト:「py2exe

Nuitka

Pythonスクリプトを高速なC言語のコードに変換するためのツールです。
ゆえに、他のライブラリより実行が高速であることが特徴です。

ただし、すべてのPython機能をサポートしているわけではありません。
また、一度C言語でコンパイルするため、exeファイルを作成するまでに時間がかかります。

インストールするには、コマンドプロンプトで次のように入力が必要です。

pip install nuitka

公式サイト「Nuitka the Python Compiler

Nuitkaは商用利用可能?

NuitkaのライセンスはApache License 2.0です。
このライセンスによると、商用利用可能です。

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

Apache License 2.0

cx_Freeze

cx_Freezeは出力されるファイルが1つではなく、作成された「.dllファイル」がないと正常に動作しません。
しかし、cx_Freezeでexe化したファイルは非常に起動が早いです。

インストールするには、コマンドプロンプトで次のように入力が必要です。

pip install cx_Freeze

公式サイト:「cx_Freeze 6.15.0-dev3 documentation

各種ライブラリの特徴

例として取り上げた4つのライブラリは以下の通りです。自身に適したライブラリを使用してください。

個人的には、PyInstallerがもっと利便性が高いのでおすすめします。

ライブラリ特徴
PyInstaller単一の実行可能ファイルに変換する。新しいPythonのバージョンに対応。
py2exe単一の実行可能ファイルを作成。Windowsにのみ対応。
NuitkaPythonの実行速度をC言語に変換して解消。C言語でコンパイルするため作成に時間がかかる。
cx_Freezeexe化したファイルの起動が非常に早い。実行には「.dllファイル」が必要。

exe化の手順

本記事では、「PyInstaller」を使用してexeファイルの作り方を紹介します。

PyInstallerのインストールには、Windowsに標準搭載されているコマンドプロンプトでインストールしていきます。

コマンドプロンプト・ターミナルはプログラミング初心者の方やウェブデザイン(html・CSS・JavaScript)をされる方にはあまり馴染みがないかと思います。

コマンドプロンプト/ターミナルとは

・コマンドプロンプト

Windows のコマンドプロンプトとは、普段マウスを用いて行っている操作を「コマンド」と呼ばれる命令文を入力して実行するものです。コマンドプロンプトでなければ操作できないこともあるため、知識として覚えておくことをおすすめします。

実際にWindows 上でコマンドプロンプトを起動すると、黒いバックグラウンドのサブウィンドウが表示され、コマンド入力の待機状態で上部に表示されます。
コマンドを入力し実行することでプログラムを起動することができ、また、実行したコマンドは一定数記憶されるため、再度実行する場合には簡単な操作で同じコマンドを実行することができます。

Windows 10 のコマンドプロンプトとは?その起動方法と使用例を紹介

・ターミナル

「ターミナル」は、macOSにコマンドラインインターフェイスを提供します。「ターミナル」内の各ウインドウは、シェルプロセスのインスタンスを表します。ウインドウには、コマンドを入力できることを示すプロンプトが含まれます。表示されるプロンプトは「ターミナル」およびシェルの設定によって異なりますが、ほとんどの場合は、ログインしているホストの名前、現在の作業フォルダ、ユーザ名、およびプロンプト記号が含まれます。

Macで「ターミナル」を開く/終了する

特に、コマンドプロンプトやターミナルは、Pythonスクリプトのデバックだけではなく、pillowNumpyMatplotlibpandasSciPyなどライブラリをインストールする際にも使用します。

Numpy・Matplotlib・pandas・SciPyなど数値解析やデータサイエンスで使用するライブラリをまとめています。
pillowは画像処理に使用します。QRコードの作成も可能です。

コマンドプロンプト起動・PyInstallerをインストール

初めに、コマンドプロンプトを起動します。

コマンドプロンプトを呼び出すには、キーボードのWindowsマークを押す。あるいは、ツールバーのwindowsのマークをクリックしてください。

そして、Windowsマーク内にある検索バーにて「コマンドプロンプト」と入力すると画像のようにコマンドプロンプトがアプリでヒットするので、起動してください。

画面が表示されましたら、前述したように、

pip install pyinstaller

と入力します。

名称は「P」・「I」が大文字ですが、
入力文字は、全て小文字であることに注意してください。

画像のような表示になれば、インストール完了です。

Python exe化

次に、Pythonをexe化していきます。
今回は、スクリプト「Test.py」のexeファイル化を進めていきます。
ファイルの名前は簡単な英単語・数字にすることをおすすめします。

「22_01_11@ tEst.py」みたいに記号や小文字・大文字の混在、空白等を使用すると、
想定通りにexe化できないこともあるので、注意しましょう。

同じくコマンドプロンプトで、ソースコードを置いてあるところまで移動します。

コマンドプロンプトを開くと、「C:\Users\(名前)>」となっています。
これは現在地を示していて、エクスプローラのファイルを開いていると考えてください。

例えば、画像のようにスクリプトをデスクトップ上に置いたのであれば、

cd desktop

と入力すると、現在地(作業フォルダー)がデスクトップになります。
もし、作業フォルダーと保存フォルダーの場所が異なるとエラーが発生しますので注意してください。

次に、

pyinstaller Test.py

と入力すると、Test.pyのexe化が開始されます。前回同様に「pyinstaller」は全て小文字です。

ファイルを1つにするときは、「–onefile」が必要です。

pyinstaller Test.py --onefile

しばらく待つと、最後の行に、「completed successfully」と表示できれば、exe化完了です。

完成したソフトはdistファイルに保存されています。

まとめ

Pythonをexe化するには「PyInstaller」を使うことでことでコマンドプロンプトやターミナルなどのシェルでデバックが不要になります。

さらに、Python環境が構築をされていないPCでも起動可能で販売や配布ができて、とても便利です。

また、本記事でPythonスクリプトをexe化したときに使用したライブラリのPyInstallerは商用利用可能です。また、PyInstallerソースコードの変更も可能です。
ただし、変更を配布する場合は、GPL条項の下で配布しなければいけません。

Udemyで学習する
タイトルとURLをコピーしました