【问题标题】:Unable to import MySQLdb in ansible module无法在 ansible 模块中导入 MySQLdb
【发布时间】:2014-03-07 13:51:40
【问题描述】:

我正在尝试在 ansible 中编写自定义模块。使用import MySQLdb 时出现错误

 failed: [127.0.0.1] => {"failed": true, "parsed": false}
invalid output was: Traceback (most recent call last):
  File "/root/.ansible/tmp/ansible-1394199347.29-33439012674717/inventory", line 11, in <module>
    import MySQLdb
ImportError: No module named MySQLdb

使用
Python 版本: 2.6.6
MySQL-python 版本: 1.2.3

Python 代码:-

#!/usr/bin/python

import datetime
import sys
import json
import os
import shlex
import MySQLdb

db = MySQLdb.connect("localhost","user","pwd","db_name" )
cursor = db.cursor()
cursor.execute("SELECT * FROM hosts")
data = cursor.fetchone()
print data
db.close()

我写了一个剧本来运行 ansible 模块:-

inventory.yaml:-

---
- hosts: webservers
  user: root
  sudo: True
  vars:
     act: list
  tasks:
  - name: Run module inventory
    action: inventory act="{{act}}" prod="roop"

我正在使用以下命令运行此剧本:-

ansible-playbook -v playboook/path/inventory.yaml 

在 python 命令行 (

在我的 ansible 模块中,其他代码正在运行。 ansible需要做任何配置设置吗?

【问题讨论】:

  • 你确定你用来运行脚本的用户有足够的权限来运行 MySQLdb 模块吗?
  • 我以 root 用户身份运行此脚本
  • 你能用 ANSIBLE_KEEP_REMOTE_FILES=1 运行并显示 /root/.ansible/tmp/ansible-xxx/inventory 代码吗?你在用 virtualenv 吗?
  • @leucos。我尝试使用 ANSIBLE_KEEP_REMOTE_FILES 显示相同的错误消息。和我在 python 代码中提到的库存代码块相同。不,我没有使用 virtualenv
  • 我的意思是使用 ANSIBLE_KEEP_REMOTE_FILES 并检查生成的文件(参见关于模块开发的 ansible 文档)

标签: python mysql-python ansible


【解决方案1】:

您的 MySQLdb 模块不在 Python 环境中。在您的脚本中,您正在运行 python:#!/usr/bin/python。您从命令行运行的 Python (&gt;&gt;&gt;) 很可能不是同一个 Python。您可以尝试运行:

which python

找出你正在运行的 Python。所以,如果是另外一个 Python 安装的话,可以在 Ubuntu 上运行:

sudo apt-get install python-mysqldb

或在 CentOS、RedHat 上:

sudo yum install MySQL-python

希望对你有帮助。

【讨论】:

  • 感谢您的回复。我已经安装了 MySQL-python。是的,我会检查我是否使用不同的 python。
  • 两者都使用相同的python /usr/bin/python
  • 你是如何安装 Ansible 的?使用点子?你可以去 Python 命令行并输入 &gt;&gt;&gt; import ansible 吗?你有什么错误吗?
  • 我已经提取 ansible tar 并使用 ansible/hacking/env-setup 设置环境变量。而&gt;&gt;&gt; import ansible 没有返回任何东西
  • 你能发布你用来运行这个模块的 Ansible 代码吗?
猜你喜欢
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 2016-04-06
  • 2021-12-29
相关资源
最近更新 更多