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)


Мисля, че нито можете да направите това с помощта на проекта за внедряване на VS, нито трябва.
person Vlad    schedule 06.06.2012
comment
За да поясним, ImportError: No module named bson.objectid ще се получи, ако опитате from bson.objectid import ObjectId без pymongo инсталиран във вашата среда. Ако стартирате pip/conda, инсталирате 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