mongodb ImportError:没有名为objectid的模块

lztngnrs  于 2023-11-17  发布在  Go
关注(0)|答案(5)|浏览(197)

我目前在Mac OS X 10.6.8上安装了django-mongodb-engine 0.4.0版本,在导入“编译器”模块时奇怪地遇到了一个有趣的错误:

  1. >> from django_mongodb_engine import compiler

字符串
我得到了以下错误:

  1. ImportError Traceback (most recent call last)
  2. /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_extensions/management/commands/shell_plus.pyc in <module>()
  3. ----> 1 from django_mongodb_engine import compiler
  4. /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django_mongodb_engine/compiler.pyc in <module>()
  5. 15 from pymongo.errors import PyMongoError
  6. 16 from pymongo import ASCENDING, DESCENDING
  7. ---> 17 from pymongo.objectid import ObjectId, InvalidId
  8. 18
  9. 19 from djangotoolbox.db.basecompiler import NonrelQuery, NonrelCompiler, \
  10. ImportError: No module named objectid


我通过pip命令安装了这个包,所有的依赖项,如pymongodjangotoolbox都已经沿着安装了。我使用的pip命令是这样的:

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


相关软件包的当前版本为:

  1. >> pip freeze | grep mongo
  2. django-mongodb-engine==0.4.0
  3. pymongo==2.2


我怀疑django_mongodb_engine包被破坏了,因为ObjectId不再被导入到pymongo中,而是属于bson模块。
你有什么建议来解决这个问题?我应该克隆django-mongodb-engine项目并在github上修复吗?

2eafrhcq

2eafrhcq1#

我遇到过类似的问题,对我来说,问题是这条线:

  1. from pymongo.objectid import ObjectId

字符串
该调用似乎在PyMongo < 2.2的版本中工作
在pymongo 2.2中,import objectid的调用是:

  1. from bson.objectid import ObjectId

mutmk8jj

mutmk8jj2#

看起来他们已经知道了(参见this pull request),但是还没有人针对develop分支创建pull请求。你可以尝试修复这个问题并提交一个新的pull请求。

v7pvogib

v7pvogib3#

我试着直接用pip安装bson,然后安装pymongo,错误没有再次出现。

btxsgosb

btxsgosb4#

我在Python 3(2017年)上发现以下工作:

  1. from pymongo import MongoClient
  2. from bson import ObjectId

字符串

hmtdttj4

hmtdttj45#

安装Pymongo解决了我的问题:

  1. pip3 install pymongo

字符串
来源:https://kb.objectrocket.com/mongo-db/how-to-install-pymongo-and-connect-to-mongodb-in-python-363

相关问题