在Fedora上使用Ansible时,使用python2.7“没有名为yum error的模块”

时间:2015-04-18 00:32:36

标签: python-2.7 fedora ansible yum

我试图通过Ansible安装软件包但是使用python2.7获取没有名为yum的模块错误。有人曾经遇到过这个问题吗?

3 个答案:

答案 0 :(得分:1)

Fedora Core 3?难怪!那个版本是从2004年开始的。我十多年前的记忆有点朦胧 - 似乎yum在那个版本中可用,但我认为" up2date"仍然是官方的高级包裹经理。

但是,同样,yum版本是2.x,并且打包它与当时的Python系统Python一起工作。即使使用kludges,ansible模块也不太可能工作。如果你真的需要在那里安装软件包,你需要找到另一种方法*。此外,FC3的镜像基础架构不再存在 - 您至少需要指向the archive

但是,我确实鼓励你尽可能地使用更新版本的Fedora,不仅仅是为了方便工作(不过,还有那些)但是因为有很多已知的漏洞可以使用在FC3上 - 我会非常犹豫是否有任何Linux发行版在2006年在网络上达到了终点。 (免责声明:我碰巧在当前的Fedora上工作)。


*替代方式:最简单的方法可能是跳过yum模块,只是让ansible直接运行yum命令。

答案 1 :(得分:1)

我的问题是我已经将ansible_python_interpreter设置为默认python之外的其他东西,因为我需要一个virtualenv python。 virtualenv python没有安装yum模块。

在我设置ansible_python_interpreter事实之前执行yum语句为我修复了这个问题。如果这不是一个选项,我本可以将事实设置回原始值(通常是/ usr / bin / python)。

对于那些希望设置此事实的人,您可以使用:

- set_fact:
    ansible_python_default_interpreter: "{{ ansible_python_interpreter }}"
    ansible_python_interpreter:  "{{ virtualenv_dir }}/bin/python"

其中{{virtualenv_dir}}是您使用pip模块安装虚拟环境的目录,如http://docs.ansible.com/ansible/pip_module.html所述。

然后将其设置回来:

- set_fact:
    ansible_python_interpreter:  "{{ ansible_python_default_interpreter }}"

这是由sys.executable返回的,通常是/ usr / bin / python。

好奇的是,这是ansible / lib / ansible / inventory / __ init __ .py第461-462行的当前代码块(可能会有变化!):

if "ansible_python_interpreter" not in new_host.vars:
                new_host.set_variable("ansible_python_interpreter", sys.executable)

我在这个帖子中找到了关于解释器事实的专业提示。 https://groups.google.com/forum/#!msg/ansible-project/yNWKzV5F-QU/e-vkWJKf6tQJ

答案 2 :(得分:-2)

模块是包含Python定义和语句的文件。文件名是附加后缀.py的模块名称。 参考:https://docs.python.org/2/tutorial/modules.html

如果您收到的错误表明"没有名为yum的模块"这是因为没有yum.py文件。

Windows系统不支持Ansible和YUM。 参考:http://docs.ansible.com/intro_installation.html