Не удается импортировать админку firebase в библиотеке python.

Вопрос или проблема

Я пытаюсь использовать библиотеки python firebase admin. Однако, когда я пытаюсь импортировать библиотеку, используя:

from firebase_admin import firestore

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mnjuhn/Library/Python/3.8/lib/python/site-packages/firebase_admin/firestore.py", line 27, in <module>
    from google.cloud import firestore
  File "/Users/mnjuhn/Library/Python/3.8/lib/python/site-packages/google/cloud/firestore/__init__.py", line 18, in <module>
    from google.cloud.firestore_v1 import gapic_version as package_version
  File "/Users/mnjuhn/Library/Python/3.8/lib/python/site-packages/google/cloud/firestore_v1/__init__.py", line 37, in <module>
    from google.cloud.firestore_v1.async_client import AsyncClient
  File "/Users/mnjuhn/Library/Python/3.8/lib/python/site-packages/google/cloud/firestore_v1/async_client.py", line 43, in <module>
    from google.cloud.firestore_v1.services.firestore import (
  File "/Users/mnjuhn/Library/Python/3.8/lib/python/site-packages/google/cloud/firestore_v1/services/firestore/__init__.py", line 16, in <module>
    from .client import FirestoreClient
  File "/Users/mnjuhn/Library/Python/3.8/lib/python/site-packages/google/cloud/firestore_v1/services/firestore/client.py", line 62, in <module>
    from google.cloud.location import locations_pb2  # type: ignore
  File "/Users/mnjuhn/Library/Python/3.8/lib/python/site-packages/google/cloud/location/locations_pb2.py", line 30, in <module>
    from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/google/api/annotations_pb2.py", line 42, in <module>
    google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(http)
AttributeError: type object 'MethodOptions' has no attribute 'RegisterExtension'
>>> 

Моя версия python – 3.8.2, и у меня установлены следующие библиотеки:

ПРЕДУПРЕЖДЕНИЕ: pip вызывается старой оберткой скрипта. Это не сработает в будущей версии pip.
Пожалуйста, смотрите https://github.com/pypa/pip/issues/5599 для получения советов по исправлению основной проблемы.
Чтобы избежать этой проблемы, вы можете вызвать Python с ‘-m pip’ вместо того, чтобы запускать pip напрямую.

------------------------ ----------
CacheControl             0.14.1
cachetools               4.0.0
certifi                  2019.11.28
cffi                     1.17.1
chardet                  3.0.4
cryptography             43.0.3
firebase                 4.0.1
firebase-admin           6.6.0
google-api-core          2.22.0
google-api-python-client 1.7.11
google-auth              2.36.0
google-auth-httplib2     0.0.3
google-cloud-core        2.4.1
google-cloud-firestore   2.19.0
google-cloud-storage     2.18.2
google-crc32c            1.5.0
google-resumable-media   2.7.2
googleapis-common-protos 1.65.0
grpcio                   1.67.1
grpcio-status            1.67.1
httplib2                 0.17.0
idna                     2.9
msgpack                  1.0.0
pip                      24.3.1
proto-plus               1.25.0
protobuf                 5.28.3
pyasn1                   0.4.8
pyasn1-modules           0.2.8
pycparser                2.22
PyJWT                    2.9.0
pytz                     2019.3
requests                 2.23.0
rsa                      4.0
setuptools               41.2.0
six                      1.14.0
uritemplate              3.0.1
urllib3                  1.25.8
wheel                    0.45.0

Ответ или решение

Проблема, с которой вы столкнулись, связана с импортом библиотеки Firebase Admin в Python. Вы получили ошибку AttributeError, указывающую, что объект MethodOptions не имеет атрибута RegisterExtension. Это может быть вызвано несколькими факторами, начиная от совместимости версий библиотек и заканчивая конфигурацией окружения.

А. Исходная информация о проблеме

Вы используете Python версии 3.8.2 и имеете установленные версии нескольких библиотек, включая:

  • firebase-admin 6.6.0
  • google-cloud-firestore 2.19.0
  • protobuf 5.28.3

Ошибка происходит при импорте модуля firestore из firebase_admin, что указывает на проблему с библиотеками, на которые ссылается firebase-admin.

Б. Версии библиотек и их совместимость

Проанализировав ваши версии библиотек, можно заметить, что некоторые из установленных вами версий могут быть не совместимы друг с другом. Например, версия firebase-admin 6.6.0 является устаревшей, так как слияние этой библиотеки с Firestore и другими компонентами Google Cloud могло привести к несовместимостям с более новыми версиями google-cloud-firestore и protobuf.

Чтобы исправить это, рекомендуется обновить библиотеки, с которыми вы работаете. Можно воспользоваться следующими командами для обновления:

pip install --upgrade firebase-admin google-cloud-firestore protobuf

В. Проверка и решение проблемы с pip

Ошибка, которую вы видите в начале (предупреждение о старом скрипт-обертке для pip), может также указывать на потенциальные проблемы с вашим установочным окружением. Чтобы избежать подобных ошибок, лучше использовать команду pip с флагом -m. Для этого выполните команды:

python -m pip install --upgrade pip
python -m pip install --upgrade firebase-admin google-cloud-firestore protobuf

Г. Проверка зависимостей

После обновления библиотек имеет смысл проверить, какие версии установлены в вашем окружении. Используйте команду:

pip list

Убедитесь, что версии библиотек соответствуют рекомендуемым.

Д. Использование виртуальных окружений

Для лучшей изоляции зависимостей между проектами и минимизации конфликтов рекомендуется использовать виртуальные окружения. Вы можете создать новое окружение с помощью venv следующим образом:

python -m venv myenv
source myenv/bin/activate  # Для macOS/Linux
myenv\Scripts\activate  # Для Windows

pip install firebase-admin google-cloud-firestore

Заключение

Следуя приведенным рекомендациям и обновлениям, вы должны устранить ошибку импорта базы данных Firestore из библиотеки Firebase Admin. Если проблема сохраняется, возможно, имеет смысл обратиться к официальной документации Firebase или Google Cloud для получения более подробной информации о совместимости версий и настройках.

Оцените материал
Добавить комментарий

Капча загружается...