python - python 虚拟环境中没有名为 yaml 的模块

标签 python ansible yaml virtualenv

我正在使用 CentOS 6.4 和 Python 2.6.6 来运行 Ansible 2.3.0。但是,当我进入具有 python 3.4.1 的 python 虚拟环境并运行“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有点关系?

最佳答案

在你激活一个 virtualenv(通过 ansible 或不通过)之后,你不应该使用 sudo 来安装带有 pip 的东西作为一个整体virtualenv 及其所有目录均归您所有。

事实上,如果你使用 sudo,你可能不会使用 virtualenv 的 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 的 PATH)。所以你不应该在激活 virtualenv 后安装东西时使用 sudo pip install ,只需使用

pip install ....

关于python - python 虚拟环境中没有名为 yaml 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179476/

相关文章:

python - 基本 Anagram VS 更高级的 Anagram

python - 将日志记录添加到 jenkins 中的测试结果中

ansible - 根据给定的服务列表查找目标Windows主机中正在运行哪些服务,如果服务没有运行则启动

ubuntu - 同一台笔记本电脑上的多个 ansible 版本

python - 新的 PyYAML 版本在大多数自定义 python 对象上中断 - RepresenterError

python - 从 Python 日志记录 YAML 配置文件中评估语句

python - 有没有办法将调试器附加到多线程 Python 进程?

python - Combinatorics Counting Puzzle : Roll 20, 8面骰子,得到至少5个相同值的骰子的概率是多少

init - 如何在 Ansible 中处理对 init 脚本的更改?

c++ - 在 RAD Studio 2010 中编译 yaml-cpp 时出错