【问题标题】:Should pymongo have a module objectid?pymongo 应该有一个模块 objectid 吗?
【发布时间】:2016-07-26 04:51:33
【问题描述】:

短版

在全新安装烧瓶和 mongoalchemy 后,这两行:

from flask import Flask
from flask.ext.mongoalchemy import MongoAlchemy

失败:

ImportError: No module named objectid

我应该去哪里看?

详情

在 El Capitan 之后:

> sudo port install py27-flask py27-flask-mongoalchemy

我确认 MacPorts 已安装的版本:

> port installed | grep 'flask\|mongo'
  py27-flask @0.10.1_1 (active)
  py27-flask-mongoalchemy @0.5.3_0 (active)
  py27-flask-script @2.0.5_0 (active)
  py27-mongoalchemy @0.11_0 (active)
  py27-pymongo @3.2.2_0 (active)

我正在运行 MacPorts Python:

> which python
/opt/local/bin/python

而且它是 2.7 分支上的最新版本:

> python --version
Python 2.7.11

然后是this 页面的第二行:

from flask import Flask
from flask.ext.mongoalchemy import MongoAlchemy

失败:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/flask/exthook.py", line 81, in load_module
    reraise(exc_type, exc_value, tb.tb_next)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/flaskext/mongoalchemy/__init__.py", line 14, in <module>
    from mongoalchemy import document, exceptions, fields, session, query
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoalchemy/document.py", line 45, in <module>
    from mongoalchemy.fields import ObjectIdField, Field, BadValueException, SCALAR_MODIFIERS
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mongoalchemy/fields.py", line 60, in <module>
    from pymongo.objectid import ObjectId
ImportError: No module named objectid

pymongo 应该有一个模块 objectid 吗?

之前对类似问题的讨论(1234)无关紧要。

编辑

嗯...mongodb 本身并没有作为烧瓶-mongoalchemy 的依赖项安装。好的,让我们手动操作:

> port list | grep mongodb
mongodb                        @3.2.4          databases/mongodb
> sudo port install mongodb

这没有帮助。弹出同样的错误。

【问题讨论】:

  • Pymongo 包含在所需的 bson 包中,并在 pymongo 包中导入。看起来你可能会错过一些进口。无论如何,这是mongoalchemy。您的安装可能存在一些问题。
  • 您愿意澄清一下吗?该网站使用“从 flask.ext.mongoalchemy 导入 MongoAlchemy”。它不使用 bson。 github.com/cobrateam/flask-mongoalchemy/blob/master/examples/… 但是
  • 您是如何“安装”MongoAlchemy 模块的?错误提示未安装所需的依赖项。
  • mongoalchemy 安装正常。 port installed | grep mongoalchemy 报告py27-flask-mongoalchemy @0.5.3_0 (active)py27-mongoalchemy @0.11_0 (active)
  • 我说的是“如何”不是“如果”。同样,您似乎缺少必需的依赖项。无论如何,您真的不应该通过ports 进行安装,并且应该为您的项目使用“本地”安装和包管理的python,而不是“系统”分发。

标签: python mongodb flask osx-yosemite macports


【解决方案1】:

你有一个古老的mongoalchemy。

请参阅提交“使用 bson 包而不是已弃用(然后删除)的 pymongo 包”: https://github.com/jeffjenkins/MongoAlchemy/commit/9152d83a8515fd557b2d90fb0059fa42a24730fe

也许你不应该相信 python 模块上的 macports。

编辑:

我看到 macports 不再维护该端口: https://www.macports.org/ports.php?by=name&substr=mongoalchemy

【讨论】:

  • 不错的收获。它甚至是从 2012 年开始的。如果您使用的是 OS X,请推荐一种安装整套设备的方法。我刚刚安装了自制软件。我能够使用 brew 安装 mongodb,但 brew 既不知道烧瓶也不知道 mongoalchemy。
  • 感谢您的帮助。 virtualenv 解决了这个问题。奇怪的是,virtualenv 本身以及(AFAICT)所有模块都来自 MacPorts,但只要它有效,......
猜你喜欢
  • 1970-01-01
  • 2010-11-16
  • 2017-02-03
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
相关资源
最近更新 更多