升级到3.9.1后,Python-bson导入错误



我有一个在早期版本的python(3.8(下编写的脚本。

当我现在运行脚本时,它会弹出堆栈跟踪:

python .ec2_mongo.py
Traceback (most recent call last):
File "C:Userstdun0002OneDrive - Synchronoss TechnologiesDesktopimportant_foldersJokefiregitjf_cloud_scriptsaws_scriptspythonaws_toolsec2_mongo.py", line 11, in <module>
from pymongo import MongoClient, errors
File "C:Userstdun0002OneDrive - Synchronoss TechnologiesDesktopimportant_foldersJokefiregitjf_cloud_scriptsaws_scriptspythonaws_toolsvenvlibsite-packagespymongo__init__.py", line 87, in <module>
from pymongo.collection import ReturnDocument
File "C:Userstdun0002OneDrive - Synchronoss TechnologiesDesktopimportant_foldersJokefiregitjf_cloud_scriptsaws_scriptspythonaws_toolsvenvlibsite-packagespymongocollection.py", line 20, in <module>
from bson.code import Code
File "C:Userstdun0002OneDrive - Synchronoss TechnologiesDesktopimportant_foldersJokefiregitjf_cloud_scriptsaws_scriptspythonaws_toolsvenvlibsite-packagesbsoncode.py", line 18, in <module>
from bson.py3compat import abc, string_type, PY3, text_type
ImportError: cannot import name 'abc' from 'bson.py3compat'

在我的代码中,我只使用bson包中的ObjectId。这是我的进口线:

from bson.objectid import ObjectId

我使用bson包中的ObjectId的代码如下所示:

def insert_doc(mydict):
_, _, instance_col = set_db()
mydict["_id"] = ObjectId()
instance_doc = instance_col.insert_one(mydict)
if __name__ == "__main__":
message = "* MongoDB Insert Document *"
banner(message, "*")
message = f"MongoDB record inserted: {instance_doc.inserted_id}"
banner(message)
return instance_doc

我不知道为什么这在3.8下有效,但我在3.9.1下得到了堆叠比赛。我怎样才能在新版本下工作?

这可能是由于版本不匹配。

尝试做:

pip uninstall bson
pip uninstall pymongo
pip install pymongo

最新更新