Python ansible can';在OSX上找不到pycurl

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

我刚刚开始使用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 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