मेरे पास एक स्क्रिप्ट है जिसे मैंने अजगर (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 उत्तर
यह संस्करण बेमेल के कारण होने की संभावना है।
करने का प्रयास करें:
pip uninstall bson
pip uninstall pymongo
pip install pymongo
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।