googleapiclientを使うプログラムでPyInstallerするとエラーがでた話
問題
Google Api(スプレッドシート)を使うプログラムをPyInstallerで実行ファイル化しようとしたら,コンパイルはできたが実行時にエラーが発生.
コンパイルしたプログラムは以下のようなもの
from googleapiclient.discovery import build
# 以下略
ここで,
pyinstaller --onefile main.py
./dist/main # コンパイルに成功し,実行ファイルができる
さて,実行ファイルを実行すると,
pkg_resources.DistributionNotFound: The 'google-api-python-client' distribution was not found and is required by the application
解決方法
google-api-clientのバージョンを1.8.0にする.
要は以下を実行すれば良い.
pip install google-api-python-client==1.8.0
なんと画期的な解決方法でしょう!!!!
詳細
参考程度ですが,実行環境は
- OS: Raspbian GNU/Linux 10 (buster)
- Python 3.7.3
- PyInstaller 4.0
おわりに
google-could-visionやFirestoreを使う場合類似したエラーについて書かれた記事を見かけたがあまり参考にならなかった.いずれの例でもpkg_resources.DistributionNotFound
に遭遇しているため同様の解決方法で行けるかと思ったが全然できずに時間が溶けました.
結局,google-api-clientのgithubのissueの議論で解決した.
PyInstallerの代替としてcx_Freezeなどでも試してみたが結局できなかった.
この問題がいつまで発生(PyInstaller/Googleが対応するまで?)するか分かりませんし,いつまでこの方法で解決するかもわからないので参考程度にしてください.また,この環境でしか試していないため,他の環境でも同様のエラーが出るかは不明です.
PythonもGolangのように公式で(クロスプラットフォームな)実行ファイル化するような方法を確立してほしいと思いました.
Author And Source
この問題について(googleapiclientを使うプログラムでPyInstallerするとエラーがでた話), 我々は、より多くの情報をここで見つけました https://qiita.com/k4saNova/items/93d61da757f7fd22773b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .