2012-05-14 14 views
11

Ich habe derzeit django-mongodb-engine 0.4.0 Version auf meinem Mac OS X 10.6.8 installiert und weirdly einen interessanten Fehler beim Import der 'Compiler' Modul aufgetreten:Import: named Kein Modul OBJECTID

>> from django_mongodb_engine import compiler 

und ich habe der folgende Fehler:

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 

ich installierte das Paket über pip Befehl und alle Abhängigkeiten wie pymongo haben djangotoolbox zusammen mit ihm installiert. Der Pip-Befehl, den ich benutzt hatte, ist dies:

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

Die aktuellen Versionen der zugehörigen Pakete sind:

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

Ich vermute, das django_mongodb_engine Paket defekt ist, weil ObjectId nicht mehr innerhalb pymongo importiert wird. Stattdessen gehört es zu bson Modul.

Was sind Ihre Vorschläge, um dieses Problem zu beheben? Sollte ich das Django-Mongodb-Engine-Projekt klonen und auf Github fixieren?

Vielen Dank im Voraus.

Antwort

44

Ich habe für mich lief in etwas ähnliches, das Problem dieser Linie war: scheint

from pymongo.objectid import ObjectId 

Der Aufruf in Versionen von PyMongo zu arbeiten < 2,2

In pymongo 2.2 der Anruf objectid zu importieren ist:

from bson.objectid import ObjectId 
2

Sieht so aus, als ob sie bereits wissen (siehe this pull request), aber niemand hat eine Pull-Anfrage gegen die Entwicklung Zweig noch erstellt. Sie könnten versuchen, das zu beheben und eine neue Pull-Anfrage zu senden.

+0

bekam ich den Patch für diesen begehen. Sieht so aus, als wäre es vor 12 Tagen gepatcht worden, nicht in Version 0.4.0. https://github.com/mgmtech/mongodb-engine/commit/d3cba0d013350d5b085bed9ea440a04b232f8575 – ozgur

1

Ich habe versucht, Bson mit Pip direkt zu installieren. Deinstallieren und installieren Sie stattdessen Pymongo und der Fehler ist nicht mehr aufgetreten.

0

Ich bin auf Python3 (im Jahr 2017) und festgestellt, dass die folgenden Werke:

from pymongo import MongoClient 
from bson import ObjectId