2012-05-14 51 views
11

我目前已安裝django-mongodb-engine版本0.4.0在我的Mac OS X 10.6.8和古怪,而導入「編譯器」模塊中遇到一個有趣的錯誤:導入錯誤:沒有名爲模塊OBJECTID

>> 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命令安裝軟件包的所有依賴像pymongodjangotoolbox已經與它一起安裝。我想用畫中畫的命令是這樣的:

>> 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嗎?

在此先感謝。

回答

44

我碰到類似的事情,對我來說,問題是這一行:

from pymongo.objectid import ObjectId 

呼叫似乎PyMongo版本工作< 2.2

在pymongo 2.2調用導入OBJECTID是:

from bson.objectid import ObjectId 
2

看起來他們已經知道了(請參閱this pull request),但沒有人創建對開發分支的請求。您可以嘗試修復並提交新的拉取請求。

+0

我得到這個提交補丁。看起來,它在12天前被修補,而不是在0.4.0版本中。 https://github.com/mgmtech/mongodb-engine/commit/d3cba0d013350d5b085bed9ea440a04b232f8575 – ozgur

1

我試圖用pip直接安裝bson。卸載,然後安裝pymongo,錯誤不會再出現。

0

我在Python3(2017年),並發現了以下工作:

from pymongo import MongoClient 
from bson import ObjectId 
相關問題