Подтвердить что ты не робот

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?

Спасибо заранее.

4b9b3361

Ответ 1

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

from pymongo.objectid import ObjectId

Похоже, что вызов работает в версиях PyMongo < 2.2

В pymongo 2.2 вызов для импорта objectid:

from bson.objectid import ObjectId

Ответ 2

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

Ответ 3

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

Ответ 4

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

from pymongo import MongoClient
from bson import ObjectId