I am currently trying to build an app with pyinstaller. I have gotten the error The \'google-api-python-client\' distribution was not found and is required by the appl
Just wanted to add to @joeyipanimation answer as it helped me to solve the problem after hours. Search for google_api_python_client-1.9.3.dist-info in your exe folder or libary area, and copy it to the main folder of where the exe is.
make sure that pip is linked to pip3 (Python 3) and not pip2 (Python2). On many OS(es) and distros, that's still the case.
Check if that solves your problem:
python3 -m pip install --upgrade google-api-python-client
If it did then add an alias to your .bashrc that links pip to pip3 and not pip2.
e.g.
echo "alias pip='pip3'" >> ~/.bashrc
Literally just ran into this issue on windows, whereas macOS is okay. I'm building with fbs and PyQt5.
google-api-python-client
is not a python module, but a resource, which means you cannot inject it as a hidden-import. googleapiclient.model
reads the distribution info from google-api-python-client
folder as a packaged resource.
Your full error might look closer to this:
...
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/
google_api_python_client-*/
into your application's src resource directory. For fbs
this can be either:
src/freeze/windows/
(recommended), orsrc/resources/windows/
Now when you fbs freeze
and subsequently fbs installer
your app, the google_api_python_client-*/
will be included in the built app's directory alongside other googleapiclient
python libraries, and the error should go away.
See: fbs project directory structure
If your packaging solution does not have similar hooks as above, then:
google_api_python_client-*/
folder from <pythonInstallLocation>/lib/site-packages/
into the built app's directory (or wherever your compiled python scripts are trying to access google-api-python-client
.pythonfbsfreezegoogle-api-python-client
If you are coding using PyCharm, do the next:
$ pip3 freeze
in the terminalI was able to find the solution here Link
Update your version of google-api-python-client to the version specified in the link (worked for me)
Also made a little .bat file:
pyinstaller --hidden-import="pkg_resources.py2_warn" --hidden-import="googleapiclient" --hidden-import="apiclient" main.py --onefile
Also of note: I ran the bat file in a virtual environment.
My case is an Python-Flask windows app bundled with Pyinstaller --onefile option, using a .spec file.
I've copied the folder google_api_python_client-1.9.3.dist-info from the original location (maybe the windows site-packages folder) to the project folder.
Adding the following line to Pyinstaller spec file datas section (app.spec) was the solution for the problem.
a = Analysis(.......
datas=[.....
('project\\google_api_python_client-1.9.3.dist-info','google_api_python_client-1.9.3.dist-info'),
.......],