Ansible - “NameError:名称‘的urllib2’没有定义”
问题描述:
闻听此事,提示以下错误,而试图与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
答
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兼容尚。
答
Ansible目前无法使用Python3
运行。这也在链接的Github问题中说明。
所以,当我切换到python2.7.9在pyenv, 'pyenv:ansible:找不到命令 的ansible命令在这些Python版本存在: 3.5.2 '这样,我需要安装ansible根据2.7.9 –
@VigneshParamasivam:你需要安装ansible。进入你的pyenv环境并运行'pip install ansible'。 – mhawke
是的,能够运行它,谢谢! –