ImportError: Нет модуля с именем objectid

В настоящее время у меня установлена ​​версия django-mongodb-engine 0.4.0 мой Mac OS X 10.6.8 и странным образом столкнулся с интересной ошибкой при импорте модуля «компилятор»:

>> 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. Команда pip, которую я использовал, такова:

>> 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?


person ozgur    schedule 14.05.2012    source источник


Ответы (4)


Я столкнулся с чем-то подобным, для меня проблема заключалась в этой строке:

from pymongo.objectid import ObjectId

Звонок вроде работает в версиях PyMongo ‹ 2.2

В pymongo 2.2 вызов import objectid:

from bson.objectid import ObjectId
person Vlad    schedule 06.06.2012
comment
Чтобы уточнить, ImportError: No module named bson.objectid будет результатом, если вы попробуете from bson.objectid import ObjectId без pymongo, установленного в вашей среде. Если вы запустите pip/conda install pymongo или получите его каким-либо другим способом, from bson.objectid import ObjectId должен работать. - person ximiki; 11.10.2018

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

person Dominic Rodger    schedule 14.05.2012
comment
Я получил патч для этой фиксации. Похоже, пропатчили 12 дней назад, а не в версии 0.4.0. github.com/mgmtech/mongodb-engine/commit/ - person ozgur; 14.05.2012

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

person David    schedule 20.11.2016

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

from pymongo import MongoClient
from bson import ObjectId
person Shane Reustle    schedule 12.07.2017