2016-08-04 72 views
0

闻听此事,提示以下错误,而试图与Python运行ansible(版本2>)3.5.2Ansible - “NameError:名称‘的urllib2’没有定义”

我特地到terming它GitHub的问题作为解决,但无法理清需要做什么。 https://github.com/ansible/ansible/issues/16013

如何解决这个问题?

[email protected]:~/ansible-spike> ansible all -m ping -vvv 
    Using /home/virtual/ansible-spike/ansible.cfg as config file 
    ERROR! Unexpected Exception: name 'urllib2' is not defined 
    the full traceback was: 

    Traceback (most recent call last): 
     File "/home/virtual/.pyenv/versions/3.5.2/bin/ansible", line 92, in <module> 
     exit_code = cli.run() 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/site-packages/ansible/cli/adhoc.py", line 193, in run 
     result = self._tqm.run(play) 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/site-packages/ansible/executor/task_queue_manager.py", line 202, in run 
     self.load_callbacks() 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/site-packages/ansible/executor/task_queue_manager.py", line 171, in load_callbacks 
     for callback_plugin in callback_loader.all(class_only=True): 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/site-packages/ansible/plugins/__init__.py", line 368, in all 
     self._module_cache[path] = self._load_module_source(name, path) 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/site-packages/ansible/plugins/__init__.py", line 319, in _load_module_source 
     module = imp.load_source(name, path, module_file) 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/imp.py", line 172, in load_source 
     module = _load(spec) 
     File "<frozen importlib._bootstrap>", line 693, in _load 
     File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
     File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
     File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/site-packages/ansible/plugins/callback/hipchat.py", line 32, in <module> 
     from ansible.module_utils.urls import open_url 
     File "/home/virtual/.pyenv/versions/3.5.2/lib/python3.5/site-packages/ansible/module_utils/urls.py", line 330, in <module> 
     if hasattr(httplib, 'HTTPSConnection') and hasattr(urllib2, 'HTTPSHandler'): 
    NameError: name 'urllib2' is not defined 

回答

1

ansible python API不支持Python 3. PyPI页面仅列出2.6和2.7。

+0

所以,当我切换到python2.7.9在pyenv, 'pyenv:ansible:找不到命令 的ansible命令在这些Python版本存在: 3.5.2 '这样,我需要安装ansible根据2.7.9 –

+0

@VigneshParamasivam:你需要安装ansible。进入你的pyenv环境并运行'pip install ansible'。 – mhawke

+0

是的,能够运行它,谢谢! –

4

Urllib2特定于Python v2。在http://docs.python.org/library/urllib2.html

urllib2的文档:

The urllib2 module has been split across several modules in Python 3.0 named urllib.request and urllib.error.

我不认为Ansible是与Python 3兼容尚。

0

Ansible目前无法使用Python3运行。这也在链接的Github问题中说明。

相关问题