我已经通过 Homebrew 安装了 Ansible (v1.4.4) 和 Python (2.7.6)。我正在创建一个 Ansible playbook,用于在 Mac (Mavericks) 上设置本地开发机器。当我使用 mysql_db 模块导入 MySQL 数据库的步骤时,Ansible 抱怨“需要 python mysqldb 模块”。因此,我使用 pip(来自 Hombrew)安装了它:pip install MySQL-python
。重新运行后,我收到相同的错误消息。 的输出cat /usr/local/bin/ansible-playbook
是
#!/bin/bash
PYTHONPATH="/usr/local/Cellar/ansible/1.4.4/libexec/lib/python2.7/site-packages" exec "/usr/local/Cellar/ansible/1.4.4/libexec/bin/ansible-playbook" "$@"
使用 pip 安装会将软件包放入“ /usr/local/lib/python2.7/site-packages
”,但 Ansible 有自己的 site-packages 文件夹,因此全局软件包不会干扰 Ansible 的要求。将 MySQL-python 安装到 Ansible 的 site-packages 文件夹的最佳方法是什么?
答案1
默认情况下,Ansible 将使用安装在/usr/bin/python
除非你另有说明。如果你想让它使用 Homebrew Python,只需将其添加到你的库存文件中:
[local]
localhost ansible_python_interpreter=/usr/local/bin/python
答案2
如果你需要在 OSX 控制机上使用包,则需要在之后运行这两行brew install ansible
mkdir -p ~/Library/Python/2.7/lib/python/site-packages
echo '/usr/local/lib/python2.7/site-packages' > ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth
https://github.com/Homebrew/homebrew/issues/29079
我需要在我的控制机器上进行加密提示变量使用 Passlib
答案3
以上两个答案都不适用于我;可能与优胜美地有关。
以下对我有用:
PYTHONPATH=/usr/local/Cellar/ansible/1.8.2/libexec/lib/python2.7/site-packages/ \
easy_install -ad ${PYTHONPATH} passlib
此后,我可以将加密密码输入到中var_prompt
。
答案4
在 Homebrew ansible 中使用自己的 python。你可以使用以下命令打包库
/usr/local/Cellar/ansible/2.2.1.0/libexec/bin/pip install MySQL-python