我使用CentOS 6.4和Python 2.6.6来运行Ansible 2.3.0。但是当我进入我的python虚拟环境,它有python 3.4.1并运行“ansible --version”时,我收到以下错误:
Traceback (most recent call last):
File "/home/namaaror/Desktop/githubansible/bin/ansible", line 80, in <module>
from ansible.cli.adhoc import AdHocCLI as mycli
File "/home/namanarora/Desktop/github/ansible/lib/cli/__init__.py", line 28, in <module>
import yaml
ImportError: No module named 'yaml'
我甚至尝试通过提供ImportError: No Module named yaml | Ansible来安装pyyaml 但错误仍然存在。它与yaml安装目录和sys.path有些关联吗?
答案 0 :(得分:1)
激活virtualenv(通过ansible
之后),您不必使用sudo
安装pip
作为整个virtualenv的内容,并且所有目录都归您所有
事实上,如果你使用sudo
,你可能不会使用virtualenv&#39; pip
:
$ mktmpenv
Using real prefix '/opt/python/2.7'
New python executable in /home/venv/tmp-ef9b4ef621d87221/bin/python
Installing setuptools, pip, wheel...done.
This is a temporary environment. It will be deleted when you run 'deactivate'.
(tmp-ef9b4ef621d87221) $ which pip
/home/venv/tmp-ef9b4ef621d87221/bin/pip
(tmp-ef9b4ef621d87221) $ sudo which pip
[sudo] password for root:
/usr/local/bin/pip
(答案可能相同,具体取决于您的登录脚本和root用户的路径)。因此,在激活virtualenv后安装内容时不应使用sudo pip install
,只需使用
pip install ....
答案 1 :(得分:0)
查看你的python3 dist-packages目录/usr/local/lib/pythonX.XX/dist-packages,看看是否安装了pyyaml。
如果它们不存在,您可以使用sudo apt-get install python3-yaml
安装它们(您可能还需要python3-setuptools和python3-wheel)