我无法在Python shell中调用pymongo

2 投票
1 回答
1317 浏览
提问于 2025-04-17 21:13

我在MAC OS X 10.9的IDLE环境中尝试使用pymongo,但只能在终端中使用。

当我在IDLE中输入import pymongo时,出现了以下错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import pymongo
ImportError: No module named 'pymongo'

但是我在终端中使用Python时,得到的是这个:

$ python
Python 2.7.5 (default, Sep 12 2013, 21:33:34) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo
>>>

这样我就可以和MongoDB一起使用了。

我是不是在安装时出了什么问题?我正在学习MongoDB,所以对这方面还比较陌生。非常感谢任何帮助。

1 个回答

6

根据你在评论中提供的信息,看来你在系统上安装了Python 3.3.4,但你却把PyMongo这个库安装到了Python 2.7上,可能是苹果系统自带的Python 2.7,那个是跟OS X 10.9一起提供的。当你安装一个第三方的包(或者叫“发行版”)时,通常它只和你用来安装它的那个Python版本相关联。安装这些包有几种常见的方法。其中一种是使用easy_install命令,这在PyMongo的页面上有提到。不过,easy_install命令也是和特定的Python版本相关联的。在最近的OS X版本中,苹果提供的easy_install命令是和系统自带的Python关联的。所以在OS X上,一个常见的错误就是在系统Python旁边安装了一个新的Python版本,然后却用默认的easy_install命令,结果你想要的包就安装到了错误的Python版本里。解决这个问题的一种方法是为你安装的每个Python版本安装一个单独的easy_install。这个easy_install命令是由setuptools包提供的。不过现在推荐的Python安装工具是pip,它比easy_install功能更多,包括可以卸载包的能力,并且在社区中得到了积极支持。

curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python3.3 get-pip.py
python3.3 -m pip install pymongo
python3.3 -c "import pymongo; print(pymongo.version)"
-> 2.6.3

你还需要为每个使用的Python版本安装一个pip。虽然还有其他方法可以调用pip,但使用上面提到的方法,你就能清楚自己在用哪个版本的Python,这样就不容易出现你现在遇到的情况。此外,还有其他工具可以使用,比如virtualenv,但特别是在OS X上,pip应该足以处理大多数初学者的使用场景。

撰写回答