1
1

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 で Pillow(PIL)を扱う実行ファイルを作る際のエラーについて

Last updated at Posted at 2021-10-19

#はじめに
Pillow を利用した実行ファイルを生成する際に出たエラーとその対処法について書いておこうと思います.

#やりたいこと
Pillow を利用したコードについて,Pyinstaller を用いて実行ファイルを生成します.

#問題点
import PIL を行い PIL.Image 関数を利用しようとすると,開発環境上では上手く実行できたのですが,Pyinstaller を利用して生成した実行ファイルを使うと プログラムが停止します.
新しいバージョンの Python だと Pillow はデフォルトで入っているようですが, Pyinstaller と Numpy の互換性の問題があり,Pyinstaller やその他のモジュールは古いバージョンを利用しているため手動で入れる必要があります.

#流れ
そこで私の行った対処についてまとめておきます.内容はあまりまとまっていないですし,細かな検証も行っていません.私の行った対処と動いた環境だけまとめておきます.
まず,普段通り pyinstaller (ファイル名).py --clean --noconsole --onefile によって生成した実行ファイルを起動すると,途中でプログラムが停止しました.
そこで,エラー内容を確認するためにコンソール表示するため, pyinstaller (ファイル名).py --onefile を実行しました.すると,AttributeError: module 'PIL' has no attribute 'Image' というエラーが出ました.(エラーの内容はもう少し長い)
もしかしたら Pillow のバージョンの問題かなと思い,他のモジュールと同時期辺りに利用されていたバージョンにダウングレードしましたが,上手く動きませんでした.
そこで,今度はモジュールのインポート文を import PIL.Image という書き方にかえ,内容も import PIL.Image as PillowImage へ変更しました.しかし,今度も開発環境では上手くいくのですが,Pyinstaller によるファイル生成時に Cannot find existing PyQt5 plugin directories というエラーが出ました.
そこで,下記リンクを参考にディレクトリを作り,pyinstaller (ファイル名).py --clean --noconsole --onefile --hidden-import="PIL.Image" のコマンドを利用して実行ファイルを生成したところ正しく動作するようになりました.
https://qiita.com/tatsuruM/items/cd657f25022c93d0284f

#環境

pillow は anaconda で提供されていないので pip install を利用する必要があります.

#利用したPython

Python = 3.7.10

#パッケージの管理

pip install Pyinstaller==3.4 (記事作成時の最新版は 4.3)
pip install pytoshop (記事作成時の最新版は 1.2.1)
pip install opencv-python==4.0.1.24 (記事作成時の最新版は 4.5.2.54)
pip install mkl==2018.0.0 (記事作成時の最新版は 2021.3.0)
pip install six (記事作成時の最新版は 1.16.0)
pip install pytoshop (記事作成時の最新版は 1.2.1)
pip install pillow==7.2.0 (記事作成時の最新版は 8.4.0)

これ以外に含まれているモジュールは,全て以前書いた記事と同様です.
https://qiita.com/bellvine/items/d42b05c3cbdd823dc77a

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?