ozg*_*gur 11 python django mongodb pymongo django-mongodb-engine
我目前在我的Mac OS X 10.6.8上安装了django-mongodb-engine 0.4.0版本,并且在导入"编译器"模块时奇怪地遇到了一个有趣的错误:
>> from django_mongodb_engine import compiler
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
我通过pip命令安装了包,并且已经安装了所有依赖项,如pymongo,djangotoolbox.我使用的pip命令是这样的:
>> sudo env ARCHFLAGS='-arch i386 -arch x86_64' pip install --upgrade django-mongodb-engine
Run Code Online (Sandbox Code Playgroud)
相关软件包的当前版本是:
>> pip freeze | grep mongo
django-mongodb-engine==0.4.0
pymongo==2.2
Run Code Online (Sandbox Code Playgroud)
我怀疑django_mongodb_engine包被破坏了,因为ObjectId不再导入pymongo了.相反,它属于bson模块.
你有什么建议来解决这个问题?我应该克隆django-mongodb-engine项目并修复github吗?
提前致谢.
Vla*_*lad 46
我碰到了类似的东西,对我来说问题是这一行:
from pymongo.objectid import ObjectId
Run Code Online (Sandbox Code Playgroud)
该调用似乎适用于PyMongo <2.2的版本
在pymongo 2.2中,对import objectid的调用是:
from bson.objectid import ObjectId
Run Code Online (Sandbox Code Playgroud)