मेरे पास एक स्क्रिप्ट है जिसे मैंने अजगर (3.8) के पुराने संस्करण के तहत लिखा था।

जब मैं इसे अभी चलाता हूं तो स्क्रिप्ट स्टैक ट्रेस के साथ उड़ जाती है:

python .\ec2_mongo.py
Traceback (most recent call last):
  File "C:\Users\tdun0002\OneDrive - Synchronoss Technologies\Desktop\important_folders\Jokefire\git\jf_cloud_scripts\aws_scripts\python\aws_tools\ec2_mongo.py", line 11, in <module>
    from pymongo import MongoClient, errors
  File "C:\Users\tdun0002\OneDrive - Synchronoss Technologies\Desktop\important_folders\Jokefire\git\jf_cloud_scripts\aws_scripts\python\aws_tools\venv\lib\site-packages\pymongo\__init__.py", line 87, in <module>
    from pymongo.collection import ReturnDocument
  File "C:\Users\tdun0002\OneDrive - Synchronoss Technologies\Desktop\important_folders\Jokefire\git\jf_cloud_scripts\aws_scripts\python\aws_tools\venv\lib\site-packages\pymongo\collection.py", line 20, in <module>
    from bson.code import Code
  File "C:\Users\tdun0002\OneDrive - Synchronoss Technologies\Desktop\important_folders\Jokefire\git\jf_cloud_scripts\aws_scripts\python\aws_tools\venv\lib\site-packages\bson\code.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 के तहत एक स्टैकट्रेस मिलता है। मैं इसे नए संस्करण के तहत कैसे काम कर सकता हूं?

-1
bluethundr 11 जिंदा 2021, 22:03
क्या आप वर्चुअल वातावरण और निर्भरता प्रबंधक का उपयोग कर रहे हैं? मुझे आशा है। उस स्थिति में, बस पर्यावरण को परमाणु बनाएं, पायथन 3.9 के साथ एक नया वातावरण बनाएं, और अपनी निर्भरता को फिर से स्थापित करें।
 – 
Chris
11 जिंदा 2021, 22:10

1 उत्तर

सबसे बढ़िया उत्तर

यह संस्करण बेमेल के कारण होने की संभावना है।

करने का प्रयास करें:

pip uninstall bson
pip uninstall pymongo
pip install pymongo
1
Chris 11 जिंदा 2021, 23:49