Error de MongoKit “ImportError: No hay módulo llamado objectid”

Me sale un error muy extraño al usar MongoKit:

>>> from mongokit import * Traceback (most recent call last): File "", line 1, in  File "/usr/local/lib/python2.7/dist-packages/mongokit/__init__.py", line 35, in  from document import Document, ObjectId File "/usr/local/lib/python2.7/dist-packages/mongokit/document.py", line 48, in  from pymongo.objectid import ObjectId ImportError: No module named objectid 

Intenté todo para encontrar la razón, pero nada ayuda. En realidad, busqué en Google el error “ImportError: No hay módulo llamado objectid” y no tiene ningún resultado. Intenté usar MongoKit siguiendo el sencillo tutorial http://namlook.github.com/mongokit/introduction.html#a-quick-example y la primera línea del tutorial produce este extraño error. A continuación se muestra el registro de instalación de MongoKit.

¿Qué estoy haciendo mal?

 user@server:~$ sudo pip install mongokit Downloading/unpacking mongokit Downloading mongokit-0.7.2.tar.gz (69Kb): 69Kb downloaded Running setup.py egg_info for package mongokit Downloading/unpacking pymongo>=2.0.1 (from mongokit) Downloading pymongo-2.2.tar.gz (228Kb): 228Kb downloaded Running setup.py egg_info for package pymongo Downloading/unpacking anyjson>=0.2.2 (from mongokit) Downloading anyjson-0.3.1.tar.gz Running setup.py egg_info for package anyjson Installing collected packages: mongokit, pymongo, anyjson Running setup.py install for mongokit Running setup.py install for pymongo building 'bson._cbson' extension gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/_cbsonmodule.c -o build/temp.linux-i686-2.7/bson/_cbsonmodule.o gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/time64.c -o build/temp.linux-i686-2.7/bson/time64.o gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/buffer.c -o build/temp.linux-i686-2.7/bson/buffer.o gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/encoding_helpers.c -o build/temp.linux-i686-2.7/bson/encoding_helpers.o gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-i686-2.7/bson/_cbsonmodule.o build/temp.linux-i686-2.7/bson/time64.o build/temp.linux-i686-2.7/bson/buffer.o build/temp.linux-i686-2.7/bson/encoding_helpers.o -o build/lib.linux-i686-2.7/bson/_cbson.so building 'pymongo._cmessage' extension gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c pymongo/_cmessagemodule.c -o build/temp.linux-i686-2.7/pymongo/_cmessagemodule.o gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.7 -c bson/buffer.c -o build/temp.linux-i686-2.7/bson/buffer.o gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-i686-2.7/pymongo/_cmessagemodule.o build/temp.linux-i686-2.7/bson/buffer.o -o build/lib.linux-i686-2.7/pymongo/_cmessage.so Running setup.py install for anyjson Successfully installed mongokit pymongo anyjson Cleaning up... 

Es un error en las dependencias. A partir de PyMongo 1.11 objectid vive en el módulo bson , no en pymongo .

Como dijo Electro, es un error.

Usé el siguiente truco sucio para mantener mi sitio en funcionamiento hasta que se solucione:

 import sys import pymongo import bson.objectid pymongo.objectid = bson.objectid sys.modules["pymongo.objectid"] = bson.objectid