【问题标题】:No module named yaml in python virtual envpython虚拟环境中没有名为yaml的模块
【发布时间】:2016-12-16 07:41:41
【问题描述】:

我正在使用 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有点关系?

【问题讨论】:

  • 你的目标是什么?
  • @techraf 在 centos 6.4 中使用 python 3.4 运行 ansible 剧本
  • 运行pip install pyyaml 时,您的虚拟环境是否处于活动状态?如果您在参考文献中使用sudo 运行它,则很可能不是。然后在没有 sudo 的情况下重试

标签: python ansible yaml virtualenv


【解决方案1】:

激活 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 ....

【讨论】:

    【解决方案2】:

    查看你的 python3 dist-packages 目录 /usr/local/lib/pythonX.XX/dist-packages 看看是否安装了 pyyaml。

    如果它们不存在,您可以使用 sudo apt-get install python3-yaml 安装它们(您可能还需要 python3-setuptools 和 python3-wheel)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 2017-09-11
      • 2021-11-24
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多