web-dev-qa-db-fra.com

La diffusion «Google-API-Python-Client» n'a pas été trouvée et est requise par l'application avec Pyinstaller.

J'essaie actuellement de construire une application avec Pyinstaller. J'ai eu l'erreur The 'google-api-python-client' distribution was not found and is required by the application et je suis complètement perdu pourquoi.

En cours pip show google-api-python-client résultats avec

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:

J'ai aussi un fichier configuratif.txt avec toutes les bibliothèques utilisées dans le projet

Toute aide serait grandement appréciée!

3
Hedgy

Il suffit littéralement dans cette question sur Windows, tandis que Macos est correct. Je suis en train de bâtir avec FBS et PYQT5 .

Le problème

google-api-python-client n'est pas un python Module, mais une ressource, ce qui signifie que vous ne pouvez pas l'injecter comme une importation cachée. googleapiclient.model lit les informations de distribution de google-api-python-client Dossier en tant que ressource emballée.

Votre erreur complète pourrait se rapprocher de ceci:

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


Solution 1 - Si vous utilisez FBS ou autre cadre d'emballage commun

  1. Localiser le google_api_python_client-*/
    • probablement quelque part <pythonInstallLocation>/lib/site-packages/
  2. Copie google_api_python_client-*/ Dans le répertoire de ressources SRC de votre application. Pour fbs Cela peut être soit: [.____]
    • src/freeze/windows/ (recommandé), ou
    • src/resources/windows/

Maintenant quand vous fbs freeze et par la suite fbs installer votre application, le google_api_python_client-*/ sera inclus dans le répertoire de l'application construite aux côtés d'autres googleapiclient python bibliothèques, et l'erreur devrait disparaître.

Voir: Structure de répertoire de projet FBS

Solution 2 - Aucun crochets d'emballage automatique (non testé):

Si votre solution d'emballage n'a pas de crochets similaires comme ci-dessus, alors:

  1. Construisez votre application
  2. Copier manuellement le google_api_python_client-*/ Dossier de <pythonInstallLocation>/lib/site-packages/ Dans le répertoire de l'application construite (ou partout où votre compilé python Les scripts tentent d'accéder à google-api-python-client.
  3. Essayez de démarrer l'application

PythonFBSgelGoogle-Api-Python-Client

3
joeyipanimation

Si vous codez à l'aide de Pycham, faites le suivant:

  1. Cours $ pip3 freeze dans le terminal
  2. Créez le fichier "Configuratif.txt" dans votre dossier de projet
  3. Copier le résultat de la première étape dans "Configuration requise"
  4. Pycham montrera le message que les packages installés dans/VENV ne satisfont pas "exigences.txt". Cliquez sur le bouton "Installation des packages", attendez que tous les packages sont installés, puis construisez votre application à nouveau.
0
Farewell

Je voulais juste ajouter à @joeyipanimation répondre car cela m'a aidé à résoudre le problème après les heures. Recherchez sur Google_API_PYTHON_CLIENT-1.9.39.3.DIST-INFO dans votre dossier EXE ou votre zone de diffusion, et copiez-le dans le dossier principal de l'endroit où l'EXE est.

0
john heroi