ImportError: no hay módulo llamado objectid

Actualmente tengo instalada la versión 0.4.0 de djangomongodb-engine en mi Mac OS X 10.6.8 y, extrañamente, encontré un error interesante al importar el módulo ‘comstackdor’:

>> from django_mongodb_engine import compiler 

y me salió el siguiente error:

 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 () ----> 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 () 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 

Instalé el paquete a través del comando pip y todas las dependencias como pymongo , djangotoolbox se han instalado junto con él. El comando pip que he usado es este:

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

Las versiones actuales de los paquetes relacionados son:

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

Sospecho que el paquete django_mongodb_engine está roto porque ObjectId ya no se importa dentro de pymongo. En su lugar, pertenece al módulo bson .

¿Cuáles son sus sugerencias para solucionar este problema? ¿Debo clonar el proyecto django-mongodb-engine y corregirlo en github?

Me he topado con algo similar, para mí el problema era esta línea:

 from pymongo.objectid import ObjectId 

La llamada parece funcionar en versiones de PyMongo <2.2

En pymongo 2.2 la llamada para importar objectid es:

 from bson.objectid import ObjectId 

Parece que ya están informados (ver esta solicitud de extracción ), pero nadie ha creado todavía una solicitud de extracción contra la twig de desarrollo. Puedes intentar arreglar eso y enviar una nueva solicitud de extracción.

Intenté instalar bson con pip directamente. Desinstale e instale pymongo en su lugar y el error no volvió a aparecer.

Estoy en Python3 (en 2017) y encontré que los siguientes trabajos:

 from pymongo import MongoClient from bson import ObjectId