Буквально только что столкнулся с этой проблемой на windows, тогда как с macOS все в порядке. Я строю с fbs и PyQt5 .
Проблема
google-api-python-client
это не модуль python, а ресурс, это означает, что вы не можете внедрить его как скрытый импорт. googleapiclient.model
считывает информацию о распространении из папки 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
Решение 1 - Если вы используете fbs или другую общую упаковочную инфраструктуру
- Найдите
google_api_python_client-*/
- , вероятно, где-то
<pythonInstallLocation>/lib/site-packages/
- Копировать
google_api_python_client-*/
в каталог ресурсов вашего приложения sr c. Для fbs
это может быть: src/freeze/windows/
(рекомендуется) или src/resources/windows/
Теперь, когда вы fbs freeze
и впоследствии fbs installer
вашего приложения google_api_python_client-*/
будут включены в каталог встроенного приложения вместе с другими библиотеками googleapiclient
python, и ошибка должна исчезнуть go.
См .: структура каталога проекта fbs
Решение 2 - Нет крючков для автоматической упаковки (не проверено):
Если ваше решение для упаковки не имеет таких же крючков, как указано выше, то:
- Создайте свое приложение
- Вручную скопируйте папку
google_api_python_client-*/
из <pythonInstallLocation>/lib/site-packages/
в каталог встроенного приложения (или туда, где ваши скомпилированные python сценарии пытаются получить доступ к google-api-python-client
. - Попробуйте запустить приложение
python fbs заморозить google-api- python -client