我正在使用 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/