6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonで書いたプログラムの実行ファイル化 pyinstaller 編(Windows, Anaconda)

Last updated at Posted at 2020-07-24

Anaconda 上で開発した Python のプログラムを実行ファイル(.exe)にして配布するために
pyinstaller を使ったら、つまずいてしまったので、その時の解決手順をまとめました。

環境

・Windows 10
・Anaconda 1.9.12

手順

Anaconda Prompt の起動と仮想環境のアクティブ化

まず、次のコマンドを入力して、すべての仮想環境の確認します。

conda info -e

「*」マークがついている環境が、現在アクティブになっていることが確認できます。
次のコマンド(「test」のところは、アクティブにしたい環境名に書き換え)を入力して、
目的の環境をアクティブにします。

activate test

pyinstaller のインストール

conda install pyinstaller

ここで「pip」ではなく「conda」を使うことをおすすめします。

実行ファイル化

実行ファイル化したい pyファイルが保存されているディレクトリに移動したあと、
以下のコマンドを実行すると、exeファイルが出力されます。

pyinstaller test.py --onefile --noconsole

オプションはそれぞれ次の意味があります
--onefile:1つのexeファイルにまとめる
--noconsole:アプリを実行した際にコマンドプロンプトを起動しない

問題なく exeファイルが出力されたら、実行してみます。
・・・あれ?開かない?
そう、なぜか開くまでに1分ほど時間がかかります。
pyinstaller の仕様なのか、オプションを追記する必要があるのかは分かりません。
※ご存知の方いましたら、ぜひ教えてください

なお、exeファイルを実行したら、
Failed to execute script pyi_rth_pkgres(スクリプト pyi_rth_pkgres の実行に失敗しました)
と書かれたメッセージボックスが表示されて、実行できない場合があります。
私はこの問題でつまずきました。

原因

http://www.pyinstaller.org/ で配布されていたリソースが古かった

解決方法

1.pip install pyinstaller でDLした Pyinstaller をアンインストール

conda uninstall pyinstaller

2.GitHub の開発リポジトリから Pyinstaller をインストール

conda install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

3.compat.py を修正

ソース内の次の表記を、

out = out.decode(encoding)

次のように修正します。

out = out.decode(encoding, errors='ignore') 

この表記はソース内に2箇所あるので、その両方を修正します。

もしこの修正をせずに exe ファイル化をすると、

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 136: invalid start byte

という文字コードエラーが出てしまいます。

以上です。最後までお読みいただきありがとうございます。
この記事が、あなたのお役に立てたら嬉しいです。

謝辞

執筆にあたり、こちらを参考にさせていただきました。ありがとうございます。
Error running the exe file in Windows "Failed to execute script pyi_rth_pkgres" #2137
【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?