Python ansible can';在OSX上找不到pycurl
我刚刚开始使用ansible,我正试图让它与OSX Yosemite的Python ansible can';在OSX上找不到pycurl,python,macos,ansible,Python,Macos,Ansible,我刚刚开始使用ansible,我正试图让它与OSX Yosemite的linode模块一起工作。我使用的是brew安装的Python,pip安装的是ansible。因此,我做了以下工作: $ brew install python $ PYCURL_SSL_LIBRARY=nss pip install pycurl $ CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install ansible 要测试: $ which
linode
模块一起工作。我使用的是brew安装的Python,pip安装的是ansible。因此,我做了以下工作:
$ brew install python
$ PYCURL_SSL_LIBRARY=nss pip install pycurl
$ CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install ansible
要测试:
$ which python
/usr/local/bin/python
$ python --version
Python 2.7.9
$ which ansible
/usr/local/bin/ansible
$ ansible --version
ansible 1.8.2
configured module search path = None
当我运行我的剧本时,我得到:
failed=True msg='pycurl required for this module'
所以ansible没有看到pycurl
库
这是剧本:
---
- hosts: 127.0.0.1
connection: local
gather_facts: no
tasks:
- name: "provision a server"
local_action:
module: linode
api_key: FOO
name: linode-test1
plan: 1
datacenter: 1
distribution: 99
password: 'superSecureRootPassword'
ssh_pub_key: ssh-rsa FOO
swap: 768
wait: yes
wait_timeout: 600
state: present
ubuntu上也出现了这种情况,最终找到了解决方案。您需要明确地向python可执行文件传递路径 将Ansible主机文件从
[local]
localhost
到
或者到您的虚拟环境python路径。我能够通过编辑
主机在OS X El Capitan 10.11.6上修复此问题:
[local]
localhost ansible_python_interpreter=/usr/local/bin/python
然后,您可能需要其他Python依赖项:
pip install pycurl
pip install linode-python
你能从python的交互式解释器中导入pycurl吗?啊,这就是问题所在。我使用nss构建它以消除一些ssl警告。导入时,我得到:>>>>导入pycurl回溯(最近一次调用最后一次):文件“”,第1行,在ImportError:pycurl:libcurl链接时ssl后端(无/其他)与编译时ssl后端(nss)Hmm不同,只是重新安装了pycurl(没有nss,这会导致许多关于ssl的警告)。我现在可以成功导入pycurl
。然而ansible仍然抱怨它没有看到它。你能比较playbook(任务:shell:python-c'import sys;print sys.path'
)中的sys.path和命令行中的sys.path吗?第一部分是来自的解决方案的逐字副本,第二部分有两个子部分:一个命令是相关命令的副本。另一个(pip安装linodepython
)是一条新信息。然而,这个问题显然是关于解决这个模块所需的pycurl
问题,而linodepython
在这里没有影响。重点是什么?在第一次使用linode模块时,我和提问者犯了同样的错误;将路径添加到python导致了一个关于没有pycurl的错误;安装pycurl导致了关于需要linodepython的进一步错误,所以“要点”是我也需要安装它,这可能会节省其他人的时间。我可以对另一个答案加上一点评论吗?也许吧,但这是一个简洁、合理和善意的回答。请随意否决。我请求对合法性的评估有所不同。这是一份老年退休金计划的答案,你甚至懒得去投票,尽管你声称它对你有帮助/会对你有帮助。我将其标记为“适度”,并为其他将投票的人留下评论,因为我认为这是我应该做的,我不需要你的许可或建议。
pip install pycurl
pip install linode-python