2012-05-14 4 views
11

У меня в настоящее время django-mongodb-engine 0.4.0 версии, установленной на моем Mac OS X 10.6.8 и удачливый обнаружил интересную ошибку при импорте модуля «компилятора»:ImportError: Нет модуль с именем не ObjectId

>> 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 is:

from bson.objectid import ObjectId 
2

Похоже, что они уже знают (см. this pull request), но никто не создал запрос на тягу против ветви разработки. Вы можете попробовать исправить это и отправить новый запрос на pull.

+0

Я получил патч для этой фиксации. Похоже, он был исправлен 12 дней назад, а не в версии 0.4.0. https://github.com/mgmtech/mongodb-engine/commit/d3cba0d013350d5b085bed9ea440a04b232f8575 – ozgur

1

Я попытался установить bson с pip напрямую. Удалите и установите pymongo вместо этого, и ошибка не появилась снова.

0

Я на Python3 (в 2017 году) и обнаружил, что следующие работы:

from pymongo import MongoClient 
from bson import ObjectId 
Смежные вопросы