web-dev-qa-db-ja.com

「google-api-python-client」ディストリビューションが見つかりませんでした。pyinstallerを使用するアプリケーションで必要です

私は現在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ファイルがあります

どんな助けでも大歓迎です!

1
Hedgy

文字通り、Windowsでこの問題が発生しましたが、macOSは問題ありません。 fbs および PyQt5 を使用してビルドしています。

問題

_google-api-python-client_はpythonモジュールではありませんが、リソースです。つまり、非表示のインポートとして注入することはできません。_googleapiclient.model_は__(SOMECODE)から配布情報を読み取ります__パッケージされたリソースとしてのフォルダー。

あなたの完全なエラーはこれに近く見えるかもしれません:

_google-api-python-client_


解決策1 – fbsまたは他の一般的なパッケージフレームワークを使用している場合

  1. _... 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-*/_
  2. _<pythonInstallLocation>/lib/site-packages/_をアプリケーションのsrcリソースディレクトリにコピーします。 fbsの場合、これは次のいずれかです。
    • _google_api_python_client-*/_(推奨)、または
    • _src/freeze/windows/_

これで、アプリを_src/resources/windows/_に続けて_fbs freeze_すると、_fbs installer_が他のgoogleapiclient pythonとともにビルドされたアプリのディレクトリに含まれます。ライブラリ、そしてエラーはなくなるはずです。

参照:fbsプロジェクトのディレクトリ構造

解決策2-自動パッケージ化フックがない(テストされていない):

パッケージソリューションに上記と同様のフックがない場合は、次のようになります。

  1. アプリを作成する
  2. _google_api_python_client-*/_フォルダーから_google_api_python_client-*/_からビルド済みアプリのディレクトリ(またはコンパイル済みのpythonスクリプトが_<pythonInstallLocation>/lib/site-packages/_にアクセスしようとしている場所)に手動で_google-api-python-client_フォルダーをコピーします。
  3. アプリを起動してみてください

pythonfbsfreezegoogle-api-python-client

3
joeyipanimation

私の場合は、.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'),     

.......],
0
Cimei

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
0
Charming Robot

PyCharmを使用してコーディングしている場合は、次の手順を実行します。

  1. ターミナルで$ pip3 freezeを実行します
  2. プロジェクトフォルダに「requirements.txt」ファイルを作成します
  3. 最初のステップの結果を「requirements.txt」にコピーします
  4. PyCharmは、/ venvにインストールされたパッケージが「requirements.txt」を満たさないというメッセージを表示します。 [パッケージのインストール]ボタンをクリックし、すべてのパッケージがインストールされるまで待ってから、アプリを再度ビルドします。
0
Farewell

それは私が時間後に問題を解決するのを助けたので、@ joeyipanimationの回答に追加したかっただけです。 exeフォルダーまたはライブラリー領域でgoogle_api_python_client-1.9.3.dist-infoを検索し、exeがあるメインフォルダーにコピーします。

0
john heroi