【问题标题】:ImportError: No module named pymongoImportError:没有名为 pymongo 的模块
【发布时间】:2021-08-29 18:04:15
【问题描述】:

我正在尝试使用 pip 安装 PyMongo Python 包。 Ansible mongodb_user module 需要它。

我正在使用以下 Ansible 脚本安装 pip 和 pymongo:

- hosts: tag_Name_Development
  become: true
  remote_user: user
  tasks:
    - name: install python tools
      yum: name={{ item }} state=latest
      with_items:
        - gcc
        - python-devel
        - python-setuptools
        - python-pip

    - name: install pymongo
      pip: name=pymongo state=latest

    - name: add admin user to mongo
      mongodb_user:
        login_port: 27017
        database: admin
        name: admin
        password: "{{ mongodb.admin_pass }}"
        roles: userAdminAnyDatabase
        state: present

成功安装工具后,我收到以下 Ansible 错误。

FAILED! => {"changed": false, "failed": true, "msg": "the python pymongo module is required"}

在安装了pymongo 的服务器上我得到了

$ python -c "import pymongo"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named pymongo

其他相关信息pip freezepip list

$ python-pip freeze
backports.ssl-match-hostname==3.4.0.2
ordereddict==1.2
pymongo==3.3.0

$ python-pip list
backports.ssl-match-hostname (3.4.0.2)
ordereddict (1.2)
pip (6.1.1)
pymongo (3.3.0)
setuptools (12.2)

并加载路径

$ python
Python 2.7.10 (default, Jul 20 2016, 20:53:27)
[GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/local/lib64/python2.7/site-packages', '/usr/local/lib/python2.7/site-packages', '/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages', '/usr/lib64/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

还有许多与此问题相关的其他问题,但没有一个有帮助。我没有安装bson,也没有使用任何虚拟环境。

【问题讨论】:

    标签: python ansible pymongo


    【解决方案1】:

    原来我安装了两个版本的 python(2.6 和 2.7)。尽管默认是 2.7,我的 Ansible 脚本安装在 2.6 文件夹 /usr/local/lib64/python2.6/site-packagespymongo

    我发现通过运行 $ python-pip show pymongo$ python2.6 -c "import pymongo" 可以正常工作。

    我将我的 Ansible 脚本更改为安装 python27-pip 而不是 python-pip,它开始运行良好。

    【讨论】:

      【解决方案2】:

      我有类似的问题。我通过将 PIP 安装目录附加到 PYTHON_PATH 并更改 PIP 安装目录的权限来解决它。

      I wrote the detailed answer here !

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-11
        • 1970-01-01
        • 2012-12-07
        • 2012-05-23
        • 2019-07-29
        • 2015-07-04
        • 2014-03-15
        相关资源
        最近更新 更多