无法从 firebase_admin 导入数据库模块

Unable to import database module from firebase_admin

我只是想将 Firebase Admin SDK 添加到我的 Python 脚本中,但由于库的一个 python 脚本中的类型错误,我无法导入数据库模块。

我安装了库 as instructed:

sudo pip install firebase-admin

我初始化了 Firebase Admin SDK as instructed:

import firebase_admin
from firebase_admin import credentials
from firebase_admin import db

但是它坏了:

>>> import firebase_admin
>>> from firebase_admin import credentials
>>> from firebase_admin import db
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/anaconda/lib/python3.6/site-packages/firebase_admin/db.py", line 33, in <module>
    from firebase_admin import _http_client
  File "/anaconda/lib/python3.6/site-packages/firebase_admin/_http_client.py", line 30, in <module>
    raise_on_status=False, backoff_factor=0.5)
TypeError: __init__() got an unexpected keyword argument 'status'

我查看了有问题的脚本 _http_client.py,发现它导入了 requests,所以我用 pip 更新了它,但无济于事。

不知道这里可能是什么问题。任何帮助将非常感激!谢谢!

原来,我的 requests 包中潜伏着一个旧版本的 urllib3。从后者中删除前者就可以了。感谢 shmee and Hiranya Jayathilaka 引导我找到解决方案!

在这里留下答案,以帮助使用谷歌搜索的人轻松找到它。

Link to issue 262 on GitHub

您可以通过以下方式检查您的版本:

import requests
from requests.packages import urllib3
print(urllib3.__version__)
>>>"1.16.1" # my output

您可以检查您正在使用的 urllib3 的位置:

import requests
from requests.packages import urllib3
print(urllib3.__file__)
>>>'...anaconda3/lib/python3.6/site-packages/requests/packages/urllib3/__init__.py'

如果您使用的是 Anaconda,您可以物理删除包,或者您可以 运行 conda update urllib3 在终端中。这对我有用。

这对我有用,我只是搜索了 urllib3 包的位置,然后将其删除。 您可以通过在 python interpreter

中点击以下命令找到包的位置
from requests.packages import urllib3
print (urllib3.__file__)