【python超入門】pyinstallerを使用してexeファイルを生成する(デフォルトにないパッケージを使用する)

python超入門2回目ですがいきなり、デフォルトにないパッケージを使用します。

pythonが人気の理由の1つとして、WORDPRESSのプラグイン同様に拡張機能の豊富さがあります。

前回記事はインストールのみでした。

Pythonで書いたプログラムを「 helloPython.py 」という名前で保存した場合は

python helloPython.py

と「python」コマンド+pyファイルで実行します。

これは実行するpc等、環境にpythonがインストールされていて、実行時のディレクトリにpython.exeがあるかpathが通っていることが前提です。

しかしpythonを入れていない環境や、他の人に配布する場合はexeファイルにすると便利です(※windowsPCの場合)

.pyファイルを.exeファイルに変換するために「pyinstaller」を使用します。

少し前はpythonやpyinstallerのバージョンによって、インストールやEXEファイル作成時、実行時にエラーがあったようですが、最新では改善されているようです。

最新のドキュメントはこちら

Pyinstallerをインストールする

下記コマンドでインストールします。

pip install pyinstaller

インストールが完了できたか、コマンドプロンプトを開いてバージョン確認コマンドを実行しましょう。

pyinstaller --version

3.5などバージョン情報が出ればOKです

HelloWorld.pyを実行する

まずはメモ帳などテキストエディタで以下プログラムを書いて、「helloworld.py」という名前で保存しましょう。

print('hello world!')

コマンドプロンプトを開いて、実行します。

「helloworld.py」 を保存したディレクトリまで「cd」コマンドを使って移動し、以下コードを実行

python helloworld.py

ディレクトリ移動がわからない場合は、

①エクスプローラーで 「helloworld.py」 を保存したディレクトリ を開く

explorer

②「shift」キーを押しながら 「helloworld.py」を「右」クリックし、「パスのコピー」 を選択

copyofpath

③コマンドプロンプトに戻り「python」と書いてスペースを空け、黒い画面上で「右」クリックで張り付けして実行

cmdexe

※貼り付けできない場合はコマンドプロンプトの画面左上のアイコンをクリック→編集→貼り付けをしてください。

howtopaste

hello world!を表示されれば成功です

HelloWorld.pyをexeファイルに変換する

今のプログラムを「pyinstaller」でexe化します。

pyinstaller helloworld.py

コマンドが成功したら、同じディレクトリにいくつかフォルダが出来てると思います。

「dist」フォルダ→「helloworld」フォルダ→「helloworld.exe」ファイルが出来ているので、コマンドプロンプトで実行します。

dist\helloworld\helloworld.exe

hello world!を表示されれば成功なので、pythonが入っていないwindowsPCでも試してみましょう

※配布時は「helloworld」フォルダごと渡す必要があります。

exeファイル単体で配布する

上記のやり方だと、「helloworld」フォルダにある他のファイルに依存関係があるのでフォルダごと配布する必要があります。

exeファイルのみの配布で済ませたい場合は

pyinstaller --onefile helloworld.py

もしくは

pyinstaller -F helloworld.py

と実行することで、「dist」フォルダ配下にexeファイル1つにまとめることが可能になります。

参照しているモジュールやライブラリを含める

現在はprint(‘hello world!’)のみでしたが、

import numpy
print('hello world!')

上記のようにライブラリやモジュールをインポートしていて、それらがデフォルト位置になかったりvenv環境で実行している場合等で、exe実行時に「ModuleNotFoundError:」が表示されてしまう時は、ライブラリやモジュールのパスを指定してあげましょう

pyinstaller -F helloworld.py -p 【venv仮想環境名】\Lib\site-packages

pyinstallerについては追記していきます。

コメント

  1. […] ファイルを保存し、コマンドプロンプトで実行する […]

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