【问题标题】:How to get Ansible on Fedora 30 to see modules如何在 Fedora 30 上获取 Ansible 以查看模块
【发布时间】:2019-08-05 23:21:43
【问题描述】:

我在 Fedora 30 上使用 dnf 安装了 Ansible 2.8.2。我有一个需要库的 Ansible 插件。我使用pip3 install 安装了所需的库。

当我直接运行ansible-playbook 时,我看到该模块的ModuleNotFoundError

但是如果我运行python3 /usr/bin/ansible-playbook,就会找到该模块。

我怎样才能让dnf 安装的 Ansible 看到这个库?

编辑: 更多信息:从dnf 安装,主Ansible 脚本有一个/usr/bin/python3 -s 的shebang。如果我删除-s,这个问题就解决了。

  1. repo 维护者在添加此 -s 标志时寻求的好处是什么?

  2. 是否有理由要求 repo 维护者省略标志?

  3. 如何让pip3 将我需要的库安装到-s 标志生效时可以看到的目录中?

编辑:这是ansible --version 的输出,感谢您的提问。

ansible 2.8.2
  config file = /home/jdashton/proj/ansible-ccharacter/ansible.cfg
  configured module search path = ['/home/jdashton/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.7.4 (default, Jul  9 2019, 16:32:37) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)]

这与建议的重复问题不同,因为该问题描述了在 localhost 上运行的“远程”任务,在这种情况下,Ansible 使用默认的“远程”python 解释器。在这个问题中,该库是在 Ansible 自己的 python 进程下从本地插件调用的。 /usr/bin/ansible 脚本顶部 shebang 行中的 -s 标志阻止 Ansible 看到一些本地库。

编辑:根据@zigarn 的建议,我尝试删除该库并将其重新安装为root。这导致库被重新安装到与以前相同的目录/usr/local/lib/...。有没有办法让pip3 安装到系统库中?

这是我尝试的命令:

# pip3 uninstall tenacity
Uninstalling tenacity-5.0.4:
  Would remove:
    /usr/local/lib/python3.7/site-packages/tenacity-5.0.4.dist-info/*
    /usr/local/lib/python3.7/site-packages/tenacity/*
Proceed (y/n)? y
  Successfully uninstalled tenacity-5.0.4
# pip3 install tenacity
Collecting tenacity
  Using cached https://files.pythonhosted.org/packages/6a/93/dfcf5b1b46ab29196274b78dcba69fab5e54b6dc303a7eed90a79194d277/tenacity-5.0.4-py2.py3-none-any.whl
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3.7/site-packages (from tenacity) (1.12.0)
Installing collected packages: tenacity
Successfully installed tenacity-5.0.4
# pip show tenacity
Name: tenacity
Version: 5.0.4
Summary: Retry code until it succeeeds
Home-page: https://github.com/jd/tenacity
Author: Julien Danjou
Author-email: julien@danjou.info
License: Apache 2.0
Location: /usr/local/lib/python3.7/site-packages
Requires: six
Required-by: 

另外,为了清楚起见,这里是 Ansible 安装的源代码:

# dnf list ansible
Last metadata expiration check: 0:09:48 ago on Mon 12 Aug 2019 11:12:58 AM EDT.
Installed Packages
ansible.noarch                                               2.8.2-1.fc30                                               @updates

【问题讨论】:

标签: python path ansible fedora


【解决方案1】:

根据python的文档-s选项是“Don’t add the user site-packages directory to sys.path.

所以我猜你是pip3 install 作为你的用户而不是root,所以库安装在你的用户端而不是系统范围内。

尝试用pip3作为root重新安装库,应该没问题。

【讨论】:

  • 我满怀希望地尝试了这个,但希望破灭了。我已经编辑了我原来的问题来展示这种尝试。不过谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-07-27
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
相关资源
最近更新 更多