2012-05-14 10 views
11

objectId मैं वर्तमान में django-mongodb-engine 0.4.0 संस्करण मेरी मैक ओएस एक्स 10.6.8 पर स्थापित और निराले ढंग से जबकि 'संकलक' मॉड्यूल आयात करने एक दिलचस्प त्रुटि का सामना किया है:ImportError: नहीं मॉड्यूल नामित

>> from django_mongodb_engine import compiler 

और मुझे मिल गया निम्न त्रुटि:

ImportError Traceback (most recent call last) 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_extensions/management/commands/shell_plus.pyc in <module>() 
----> 1 from django_mongodb_engine import compiler 

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_mongodb_engine/compiler.pyc in <module>() 
     15 from pymongo.errors import PyMongoError 
     16 from pymongo import ASCENDING, DESCENDING 
---> 17 from pymongo.objectid import ObjectId, InvalidId 
     18 
     19 from djangotoolbox.db.basecompiler import NonrelQuery, NonrelCompiler, \ 

ImportError: No module named objectid 

मैं pip आदेश के माध्यम से पैकेज स्थापित किया है और सभी निर्भरता pymongo की तरह, djangotoolbox उसके साथ स्थापित किया गया है। पिप आदेश मैं इस्तेमाल किया था यह है:

>> sudo env ARCHFLAGS='-arch i386 -arch x86_64' pip install --upgrade django-mongodb-engine 

संबंधित संकुल के वर्तमान संस्करण हैं:

>> pip freeze | grep mongo 
django-mongodb-engine==0.4.0 
pymongo==2.2 

मुझे लगता है django_mongodb_engine पैकेज क्योंकि ObjectId pymongo अंदर अब और आयात नहीं किया जाता टूट गया है। इसके बजाय, यह bson मॉड्यूल से संबंधित है।

इस समस्या को ठीक करने के लिए आपके सुझाव क्या हैं? क्या मुझे django-mongodb-engine प्रोजेक्ट क्लोन करना चाहिए और github पर ठीक करना चाहिए?

अग्रिम धन्यवाद।

उत्तर

44

मैं ऐसी ही कुछ में भाग लिया है, मेरे लिए समस्या इस लाइन था:

from pymongo.objectid import ObjectId 

कॉल PyMongo के संस्करणों में काम करने के लिए लगता है < 2.2

pymongo 2.2 कॉल ObjectId आयात करने के लिए है:

from bson.objectid import ObjectId 
2

ऐसा लगता है कि वे पहले से ही जानते हैं (this pull request देखें), लेकिन किसी ने अभी तक विकास शाखा के खिलाफ पुल अनुरोध नहीं बनाया है। आप इसे ठीक करने का प्रयास कर सकते हैं और एक नया पुल अनुरोध जमा कर सकते हैं।

+0

मैं इस के लिए प्रतिबद्ध के लिए पैच मिला। ऐसा लगता है, यह 12 दिन पहले पैच किया गया था, 0.4.0 संस्करण में नहीं। https://github.com/mgmtech/mongodb-engine/commit/d3cba0d013350d5b085bed9ea440a04b232f8575 – ozgur

1

मैंने सीधे पीआईपी के साथ बीएसओ स्थापित करने की कोशिश की। अनइंस्टॉल करें, और इसके बजाय पिमोंगो इंस्टॉल करें और त्रुटि फिर से दिखाई नहीं देगी।

0

मैं python3 (2017 में) पर हूँ और पाया कि निम्न काम करता है:

from pymongo import MongoClient 
from bson import ObjectId