2012-05-14 13 views
11

tengo actualmente django-mongodb-engine 0.4.0 versión instalada en mi Mac OS X 10.6.8 y extrañamente encontró un error interesante al importar el módulo 'compilador':ImportError: Sin módulo denominado OBJECTID

>> from django_mongodb_engine import compiler 

y tengo 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 <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 

he instalado el paquete vía pip mando y todas las dependencias como pymongo, djangotoolbox se han instalado junto con él. El comando pip que había utilizado es el siguiente:

>> 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 se rompe debido OBJECTID no se importa dentro pymongo más. En cambio, pertenece al módulo bson.

¿Cuáles son sus sugerencias para solucionar este problema? ¿Debería clonar el proyecto django-mongodb-engine y fijarme en github?

Gracias de antemano.

Respuesta

44

He encontré con algo similar, para mí el problema era esta línea:

from pymongo.objectid import ObjectId 

La llamada parece funcionar en las versiones de PyMongo < 2.2

En pymongo 2.2 de la llamada a importar objectid es:

from bson.objectid import ObjectId 
2

Parece que ya son conscientes (vea this pull request), pero nadie ha creado una solicitud de extracción contra la rama de desarrollo aún. Puede intentar solucionar eso y enviar una nueva solicitud de extracción.

+0

me dieron el parche para este cometido. Parece que fue parcheado hace 12 días, no en la versión 0.4.0. https://github.com/mgmtech/mongodb-engine/commit/d3cba0d013350d5b085bed9ea440a04b232f8575 – ozgur

1

Intenté instalar bson con pip directamente. Desinstale e instale pymongo y el error no volverá a aparecer.

0

Estoy en python3 (en 2017) y encontraron que las siguientes obras:

from pymongo import MongoClient 
from bson import ObjectId 
Cuestiones relacionadas