私は現在pyinstallerでアプリを構築しようとしています。エラーが発生しましたThe 'google-api-python-client' distribution was not found and is required by the application
そして私はなぜ完全に迷っています。
ランニング pip show google-api-python-client
結果
Name: google-api-python-client
Version: 1.8.2
Summary: Google API Client Library for Python
Home-page: http://github.com/google/google-api-python-client/
Author: Google LLC
Author-email: [email protected]
License: Apache 2.0
Location: c:\dev\software\schoology_scrape\schoology_scrape_venv\lib\site-packages
Requires: google-auth-httplib2, uritemplate, google-auth, google-api-core, httplib2, six
Required-by:
また、プロジェクトで使用されるすべてのライブラリを含むrequirements.txtファイルがあります
どんな助けでも大歓迎です!
文字通り、Windowsでこの問題が発生しましたが、macOSは問題ありません。 fbs および PyQt5 を使用してビルドしています。
_google-api-python-client
_はpythonモジュールではありませんが、リソースです。つまり、非表示のインポートとして注入することはできません。_googleapiclient.model
_は__(SOMECODE)から配布情報を読み取ります__パッケージされたリソースとしてのフォルダー。
あなたの完全なエラーはこれに近く見えるかもしれません:
_google-api-python-client
_
...
File "c:\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\googleapiclient\http.py", line 67, in <module>
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "c:\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\googleapiclient\model.py", line 36, in <module>
File "site-packages\pkg_resources\__init__.py", line 479, in get_distribution
File "site-packages\pkg_resources\__init__.py", line 355, in get_provider
File "site-packages\pkg_resources\__init__.py", line 898, in require
File "site-packages\pkg_resources\__init__.py", line 784, in resolve
pkg_resources.DistributionNotFound: The 'google-api-python-client' distribution was not found and is required by the application
_ [.____を見つけます。]google_api_python_client-*/
_<pythonInstallLocation>/lib/site-packages/
_をアプリケーションのsrcリソースディレクトリにコピーします。 fbs
の場合、これは次のいずれかです。google_api_python_client-*/
_(推奨)、またはsrc/freeze/windows/
_これで、アプリを_src/resources/windows/
_に続けて_fbs freeze
_すると、_fbs installer
_が他のgoogleapiclient
pythonとともにビルドされたアプリのディレクトリに含まれます。ライブラリ、そしてエラーはなくなるはずです。
パッケージソリューションに上記と同様のフックがない場合は、次のようになります。
google_api_python_client-*/
_フォルダーから_google_api_python_client-*/
_からビルド済みアプリのディレクトリ(またはコンパイル済みのpythonスクリプトが_<pythonInstallLocation>/lib/site-packages/
_にアクセスしようとしている場所)に手動で_google-api-python-client
_フォルダーをコピーします。私の場合は、.specファイルを使用して、Pyinstaller --onefileオプションにバンドルされたPython-Flask Windowsアプリです。
フォルダーgoogle_api_python_client-1.9.3.dist-infoを元の場所(おそらくWindowsのsite-packagesフォルダー)からプロジェクトフォルダーにコピーしました。
Pyinstallerスペックファイルのデータセクション(app.spec)に次の行を追加すると、問題が解決します。
a = Analysis(.......
datas=[.....
('project\\google_api_python_client-1.9.3.dist-info','google_api_python_client-1.9.3.dist-info'),
.......],
pipがpip2(Python2)ではなく、pip3(Python 3)にリンクされていることを確認してください。多くのOSとディストリビューションでは、まだそうなっています。
それで問題が解決するかどうかを確認します。
python3 -m pip install --upgrade google-api-python-client
存在する場合は、pip2ではなくpipをpip3にリンクするエイリアスを.bashrcに追加します。
例えば.
echo "alias pip='pip3'" >> ~/.bashrc
PyCharmを使用してコーディングしている場合は、次の手順を実行します。
$ pip3 freeze
を実行しますそれは私が時間後に問題を解決するのを助けたので、@ joeyipanimationの回答に追加したかっただけです。 exeフォルダーまたはライブラリー領域でgoogle_api_python_client-1.9.3.dist-infoを検索し、exeがあるメインフォルダーにコピーします。