【问题标题】:pymongo: ImportError: No module named pymongopymongo:ImportError:没有名为 pymongo 的模块
【发布时间】:2019-01-20 12:36:23
【问题描述】:

我使用pip3成功安装了pymongo

Aleeshas-MacBook-Air:project 2 aleesha$ sudo pip3 install pymongo
The directory '/Users/aleesha/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/aleesha/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting pymongo
  Downloading pymongo-3.4.0-cp35-cp35m-macosx_10_6_intel.whl (294kB)
    100% |████████████████████████████████| 296kB 730kB/s 
Installing collected packages: pymongo
Successfully installed pymongo-3.4.0
Aleeshas-MacBook-Air:project 2 aleesha$

然后我在 python 中编写了一个写入 MongoDB 的测试脚本。但是当我执行它时,我收到以下错误:

Aleeshas-MacBook-Air:project 2 aleesha$ python pythonScript.py 
Traceback (most recent call last):
  File "pythonScript.py", line 5, in <module>
    from pymongo import MongoClient
ImportError: No module named pymongo
Aleeshas-MacBook-Air:project 2 aleesha$

Python 版本:Python 3.5.2

路径是这样的:

 >>> import sys
    >>> sys.path
    ['', '/Users/aleesha/Documents', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']
>>> sys.version
'3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]'
>>> 

在谷歌上搜索。在 stackoverflow 上发现了这个问题:ImportError: No module named 'pymongo' 然后指向 stackoverflow 上的另一个页面:failure to import pymongo ubuntu

sudo pip uninstall pymongo ==> Succesfully uninstalled
sudo pip uninstall bson ==> Cannot uninstall requirement bson, not installed
sudo apt-get remove python-bson ==> sudo: apt-get: command not found
sudo apt-get remove python-gridfs    # not sure if it's necessary ==> sudo: apt-get: command not found
sudo pip install pymongo -U ==> successfully installed pymongo

但是,即使在此之后,我也面临同样的问题。我无法导入 pymongo 模块。

编辑:我尝试了更多的方法来解决这个问题。使用 IDLE,我可以导入 pymongo 并轻松地将记录插入 MongoDB。

>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> db = client.kmp
>>> db.KMP_DATA.insert_one({"seq" : 1,"data" : "ABCD"})
<pymongo.results.InsertOneResult object at 0x1058c8828>
>>> 

但是我仍然无法从 python 脚本中导入它。

【问题讨论】:

  • 打印 sys.version 并检查您的 Python 版本是否实际上是 3.5。如果没有,请使用python3 而不是仅使用python,它会正常工作。
  • >>> sys.version '3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]' >>>
  • 你用pip3 安装了pymongo 并用python 运行你的脚本我猜是py2.x
  • @styvane,我犯了同样的错误。安装 python3/pip3 并使用 pyhon 运行脚本。

标签: python mongodb python-3.x pymongo pymongo-3.x


【解决方案1】:

“pip”或“pip3”与“python”或“python3”不同的环境是一个常见问题。为确保您使用与运行相同的环境进行安装:

python -m pip install pymongo

或者:

python3 -m pip install pymongo

【讨论】:

    【解决方案2】:
    1. 蟒蛇路径 macOS 有自己的 python。有时我们会从 brew 或 anaconda 安装另一个 python。所以首先你应该使用哪个 python。
    which python
    which python3
    which pip
    which pip3
    

    pythonpython3pippip3 命令可以是路径、别名或软链接。

    如果它是一条路径,你会找到它; 如果是别名或者软链接,你应该使用ls -l xxx找到python的真实路径

    示例:

    [morningtzh@mbajiushigelaji:~]
    % which python
    python: aliased to /Users/morningtzh/anaconda/bin/python3
    [morningtzh@mbajiushigelaji:~]
    % ls -l /Users/morningtzh/anaconda/bin/python3
    lrwxr-xr-x  1 morningtzh  staff  9  1  8 14:41 /Users/morningtzh/anaconda/bin/python3 -> python3.6
    [morningtzh@mbajiushigelaji:~]
    % ls -l /Users/morningtzh/anaconda/bin/python3.6
    -rwxrwxr-x  1 morningtzh  staff  3937816  1  8 14:41 /Users/morningtzh/anaconda/bin/python3.6
    [morningtzh@mbajiushigelaji:~]
    % which pip3
    /Users/morningtzh/anaconda/bin/pip3
    [morningtzh@mbajiushigelaji:~]
    % ls -l /Users/morningtzh/anaconda/bin/pip3
    -rwxr-xr-x  1 morningtzh  staff  237 10 16 16:16 /Users/morningtzh/anaconda/bin/pip3
    

    例子说明我的python和pip是一对~~~

    1. 你在使用虚拟环境

    以同样的方式找到真正的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 2019-11-07
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 2019-03-28
      • 2017-12-30
      相关资源
      最近更新 更多