我在Fedora 30上使用dnf安装了Anble2.8.2。我有一个可插入的插件,它需要一个库。使用pip3 install,我安装了所需的库。
当我直接运行ansible-playbook时,我会看到该模块的ModuleNotFoundError。
但是如果我运行python3 /usr/bin/ansible-playbook,就会找到模块。
如何让dnf安装的Ansible来查看这个库?
编辑:进一步的信息:从dnf安装的主Ansible脚本为/usr/bin/python3 -s提供了一个shebang。如果我删除-s,这个问题就解决了。
-s标志时所寻求的好处是什么?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过程中。在-s脚本顶部的shebang行中的/usr/bin/ansible标志阻止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发布于 2019-08-06 15:21:14
根据文档,python的-s选项是"不要将用户站点包目录添加到sys.path。“。
因此,我猜想您将pip3 install作为您的用户而不是root,因此库安装在您的用户端而不是系统范围内。
尝试用pip3作为root重新安装这个库,它应该是可以的。
https://stackoverflow.com/questions/57367112
复制相似问题