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のインストール方法を知りたい。
Tkinterとは
Tkinterは、Pythonの標準ライブラリで、GUIアプリケーションを作成するためのツールキットです。
Tkinterは、Tcl/TkをラップしてPythonから利用できるようにしたもので、Pythonのクロスプラットフォーム性を維持しながら、シンプルで使いやすいGUIアプリケーションを作成できます。
Tkinterは、ボタン、ラベル、テキストボックス、スクロールバー、メニューなどのウィジェットを提供し、これらを自由に配置してGUIアプリケーションを構築することができます。
また、ウィンドウのサイズや色、フォントなどのカスタマイズも可能です。
Tkinterは、Pythonの標準ライブラリに含まれているため、Pythonをインストールすると自動的に使用できます。初心者から上級者まで、幅広いレベルのプログラマーにとって使いやすいGUI開発ツールキットです。
また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のスクリプトをバイトコードに変換し、それを実行することができるようになります。そのため、実行速度が向上する場合があります。
Pythonの学習進め方
Pythonでできることは多岐に渡ります。
Pythonは強力で柔軟なプログラミング言語ですが、常に情報がアップデートされるので、
新しいライブラリやフレームワークを独学で学び続けることは困難です。
Udemyは動画で目的に応じた講座を受講できるのでレベルを合わせて学習できます。
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで独学できます。
Pythonでデータサイエンスや人工知能、GUIを学びたい人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を5つ紹介します。
ビックセール開催中(10月11日まで)
対象のコースが1500円から(最大95%OFF)
Pythonをインストールから環境設定、基本文法が学習できる。さらに、モジュールの使い方やファイル操作の他に暗号化、並列化、インフラ自動化、キューイングシステム、非同期処理についても学べます。
Pythonの基礎を押さえつつ、人口知能やニューラルネットワーク、機械学習を取り扱う。機械学習ライブラリで文字認識や株価分析などを行う。
データサイエンティストになるために必要なツールについて学ぶことができる。統計分析、NumpyやPandasなどを使ったPythonのプログラミング、機械学習の実装、ディープラーニングの実装を学習できる。
PythonでGUIを作成する方法を取り扱う。Tkinterの発展的な操作まで学習できる。翻訳アプリ、家計簿アプリ、電卓アプリ、音楽再生アプリなど作成して、exeファイル化する。
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-License
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.
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にのみ対応。 |
Nuitka | Pythonの実行速度をC言語に変換して解消。C言語でコンパイルするため作成に時間がかかる。 |
cx_Freeze | exe化したファイルの起動が非常に早い。実行には「.dllファイル」が必要。 |
exe化の手順
本記事では、「PyInstaller」を使用してexeファイルの作り方を紹介します。
PyInstallerのインストールには、Windowsに標準搭載されているコマンドプロンプトでインストールしていきます。
コマンドプロンプト・ターミナルはプログラミング初心者の方やウェブデザイン(html・CSS・JavaScript)をされる方にはあまり馴染みがないかと思います。
・コマンドプロンプト
Windows のコマンドプロンプトとは、普段マウスを用いて行っている操作を「コマンド」と呼ばれる命令文を入力して実行するものです。コマンドプロンプトでなければ操作できないこともあるため、知識として覚えておくことをおすすめします。
実際にWindows 上でコマンドプロンプトを起動すると、黒いバックグラウンドのサブウィンドウが表示され、コマンド入力の待機状態で上部に表示されます。
Windows 10 のコマンドプロンプトとは?その起動方法と使用例を紹介
コマンドを入力し実行することでプログラムを起動することができ、また、実行したコマンドは一定数記憶されるため、再度実行する場合には簡単な操作で同じコマンドを実行することができます。
・ターミナル
「ターミナル」は、macOSにコマンドラインインターフェイスを提供します。「ターミナル」内の各ウインドウは、シェルプロセスのインスタンスを表します。ウインドウには、コマンドを入力できることを示すプロンプトが含まれます。表示されるプロンプトは「ターミナル」およびシェルの設定によって異なりますが、ほとんどの場合は、ログインしているホストの名前、現在の作業フォルダ、ユーザ名、およびプロンプト記号が含まれます。
Macで「ターミナル」を開く/終了する
特に、コマンドプロンプトやターミナルは、Pythonスクリプトのデバックだけではなく、pillowやNumpy・Matplotlib・pandas・SciPyなどライブラリをインストールする際にも使用します。
コマンドプロンプト起動・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条項の下で配布しなければいけません。