Pythonでexeアプリケーションを作成する時に考えること

アプリケーション開発

当記事では、Pythonでexeアプリケーションを開発する時に考える必要のあることをご紹介します。

Z-A-K-I
Z-A-K-I

Pythonでexeアプリケーションを初めて作るけど、どうしたらいんだろう?

と、思ってる方におすすめです。

この記事では、以下のことを紹介してます。

  • Pythonとは
  • Pythonのインストール方法
  • Python開発時のコーディング規約
  • Pythonでexeアプリケーションの作成方法
  • その他:開発者間で利用ライブラリのバージョン統一方法

Pythonの説明から、コーディング規約、exeアプリケーションを作成する方法について、手順を追って紹介していきます。また記事の最後には、チーム開発する際に開発者間で利用ライブラリのバージョンを統一する方法についてもご紹介しています。

Pythonとは

Pythonとは、AIや分析系によく利用される言語です。ライブラリが豊富で開発が簡単なことが特徴です。

ライブラリとはプログラムの部品の集まりです。Python以外の言語だと、自分で作成しなければならない部品が、Pythonだと豊富に公開されているので、開発する手間をなくすことができます。そのため、プログラムを作成する生産性が高い言語です。

また、人気の言語であるため開発者が多く、情報がインターネット上に豊富にあり、困ったことがあってもすぐに解決策が見つかることが多いです。そのためプログラミング初学社にとっても取り掛かりがしやすい言語です。

Pythonについての詳細な情報は以下サイトをご参照ください。開発環境の構築方法から、Pythonプログラミングの入門内容、各バージョンのアップデート内容など、様々な情報が記載されています。

Python.jp(Python情報サイト)

pythonドキュメント

インストール方法

以下サイトからインストーラをダウンロードします。Windows、 Macのインストーラのどちらも入手できます。

Welcome to Python.org
The official home of the Python Programming Language

インストールは特に難しくなく、インストーラの指示に従ってボタンを押していくだけです。

コーディング規約

以下サイトを参照ください。

PEP8

Pythonでexeアプリケーションの開発方法

Pythonでexeアプリケーションを開発するには、ライブラリを利用する必要があります。exe化するライブラリはいくつか存在しますが、一番メジャーと思われるPyinstallerを使ってexe化する方法をご紹介します。

pyinstallerはあらかじめ以下コマンドでインストールしておきます。

pip install pyinstaller

以下コマンドを実行することで、exeファイルが作成できます。

# 仮想環境にアクティベート
.\仮想環境フォルダ\Scripts\activate
# exeファイル化 アイコンを設定したい場合は、以下のように「--icon」オプションを付与
pyinstaller test.py --onefile  --noconsole  --icon=test.ico

Pyinstallerを使ってexe化することで、PythonをインストールしていないPCでもアプリケーションを実行することが可能となります。ただし、Windowsでexe化したものはWindowsのみで実行可能、Macで作成したものはMacでのみ実行可能という制約があります。

その他

exeアプリケーションの開発とは関係ないですが、Pythonで開発する際に知っておいた方が良い内容を記載します。

pythonでのライブラリバージョンの展開方法

Pythonでライブラリを追加する場合は、pipコマンドを利用します。

pipコマンドでライブラリをインストールする際、バージョンを指定しないとコマンド実行時点の最新バージョンのライブラリがインストールされます。

インストールする時期によってライブラリのバージョンが異なってしまうので、下記のようにライブラリのバージョン情報をテキストファイルに出力し、そのファイルを元にライブラリをインストールすることで、バージョンを統一することができます。

# フォルダを仮想環境化 ※仮想環境=ワークスペース
python -m venv "仮想環境名を指定"
# 仮想環境にアクティベート 
.\上記で作成した仮想環境フォルダ\Scripts\activate
'''
仮想環境にインストールされているライブラリをファイル化
出力されて「req.txt」をSVNやGITでソース管理する。
'''
python -m pip freeze > req.txt

以下コマンドを実行することで出力されたバージョンのライブラリを別環境にインストールすることができます。

# 該当の仮想環境にアクティベート ※仮想環境=ワークスペース
python -m venv "仮想環境名を指定"
# 仮想環境にアクティベート 
.\上記で作成した仮想環境フォルダ\Scripts\activate
# pipコマンドの最新化 ※pipコマンドインストール用コマンド
python -m pip install --upgrade pip
# 抽出したライブラリ情報の内容をインストールする ※プロキシ環境下ではプロキシの設定が必要
python -m pip install -r .\該当のフォルダ\req.txt

Pythonをexe化することにはあまり関わりがありませんが、私が開発時に遭遇した事象と対応内容を備忘として記載しておきます。

Python開発Tips

Tips1:VSCodeでデバッグ時、参照できる配列の上限をデフォルト500から変更する方法

デフォルトの状態だと、配列は500までしか参照できません。500以上の情報を参照しようとすると以下のメッセージが表示されます。

「Maximum number of items (500) reached. To show more items customize the value of the PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS environment variable」

利用しているPythonの以下ファイルを編集することで最大参照数を変更することができます。

"C:\Users\ユーザ名.vscode\extensions\ms-python.python-2023.4.1\pythonFiles\lib\python\debugpy_vendored\pydevd_pydevd_bundle\pydevd_constants.py"

上記ファイルを開いて「PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS」の値を変更します。

~ 省略 ~
PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS = as_int_in_env('PYDEVD_CONTAINER_INITIAL_EXPANDED_ITEMS', 100)
PYDEVD_CONTAINER_BUCKET_SIZE = as_int_in_env('PYDEVD_CONTAINER_BUCKET_SIZE', 1000)
PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS = as_int_in_env('PYDEVD_CONTAINER_RANDOM_ACCESS_MAX_ITEMS', 1500) ←コレの値を任意に変更する。ここでは1500に上限を上げている。
PYDEVD_CONTAINER_NUMPY_MAX_ITEMS = as_int_in_env('PYDEVD_CONTAINER_NUMPY_MAX_ITEMS', 500)
~ 省略 ~

デバッグコンソール上で500以上確認できるようになります。
image.png

まとめ

Pythonでexeアプリケーションを作成する時に考えることのまとめ

本記事では、Pythonの導入方法から、exeアプリケーションを作成する方法までをご紹介しました。

Pythonは他言語と比べてライブラリが豊富にあり、生産性が高い人気の言語です。AIなどでよく利用されるイメージが強いですが、exeアプリケーションも作ることができます。今後も、Pythonを使ったさまざまな機能をご紹介して行きます。

皆様のご参考となれば幸いです。

参考サイト

以下のサイトを参考とさせていただきました。ありがとうございます。

トレノキャンプ
TRAINOCAMPは、体験を重視する教材を使い、即戦力となるITスキルを学習するeラーニングサービスです。プログラミング、データサイエンス、ITリテラシーなど初心者から現役エンジニア、これからIT業界を志す人まで幅広く対応しています。

Pyインストーラのexe化

この記事を書いた人
z_a_k_i

z_a_k_iと申します。

富山でITエンジニアとして働いています。
0歳児と3歳児を持つ30代メンズです。

このブログでは、以下の内容を紹介しています。

 ⚫︎アプリケーション開発
 ⚫︎富山県の情報発信

皆様に役立つ内容を紹介できるよう精進していきますので、
どうぞよろしくお願いします。

z_a_k_iをフォローする
アプリケーション開発

コメント