【发布时间】: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,这个问题就解决了。
repo 维护者在添加此
-s标志时寻求的好处是什么?是否有理由要求 repo 维护者省略标志?
如何让
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
【问题讨论】:
-
你能显示
ansible --version的输出吗? -
@MattP,问题中添加了输出。谢谢!
标签: python path ansible fedora