我在MAC High Sierra 10.13.3上安装了ansible,但是当我尝试运行"ansible --version"时,出现以下错误:
-bash: /usr/local/bin/ansible: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory
请告诉我您是否遇到相同的问题或者有解决方案。
/usr/local/bin/ansible
的第一行路径为 "/usr/local/opt/python/bin/python2.7"
。而在 /usr/local/opt/python/bin/
目录下,我有 python3.6 而非 python2.7。
因此,我修改了文件 vi /usr/local/bin/ansible
中的 PATH。
将其从 #!/usr/local/opt/python/bin/python2.7
修改为 #!/usr/local/opt/python/bin/python3.6
,问题得以解决。
验证:
$ ansible --version
ansible 2.5.0
config file = None
configured module search path = ['/Users/<username>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /Users/<username>/Library/Python/3.6/lib/python/site-packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.4 (default, Mar 1 2018, 18:36:50) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)]
$ ansible localhost -m ping
localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible localhost -m setup -a 'filter=ansible_distribution'
localhost | SUCCESS => {
"ansible_facts": {
"ansible_distribution": "MacOSX"
},
"changed": false
}
在我的情况下,我使用pyenv来管理我的python版本,$PATH和符号链接都正确地指向了正确的路径。
$ pyenv which python
/Users/<username>/.pyenv/versions/3.7.3/bin/python
$ which python
/Users/<username>/.pyenv/shims/python
在/usr/local/bin/ansible
路径下的ansible配置已指向正确的python版本3.7
#!/usr/local/opt/python/bin/python3.7
.
.
.
但是ansible --version
返回Python 2.7作为其解释器。
$ ansible --version
ansible 2.9.12
configured module search path = ['/Users/<username>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /Users/<username>/.pyenv/versions/2.7.16/lib/python2.7/site-packages/ansible
executable location = /Users/<username>/.pyenv/versions/2.7.16/bin/ansible
python version = 2.7.16 (default, Apr 2 2020, 13:02:51) [Clang 11.0.3 (clang-1103.0.32.29)]
官方Ansible文档建议使用pip3安装Python3的Ansible,我已经卸载了旧版本的Ansible并重新使用pip3安装,但解释器仍指向Python2.7。
最后,我在我的主目录中手动添加了.ansible.cfg文件,并通过手动添加配置了Python解释器。
ansible_python_interpreter=/usr/bin/python
现在,ansible已正确配置为python3。
ansible 2.9.12
config file = /Users/<username>/.ansible.cfg
configured module search path = ['/Users/<username>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /Users/<username>/.pyenv/versions/3.7.3/lib/python3.7/site-packages/ansible
executable location = /Users/<username>/.pyenv/versions/3.7.3/bin/ansible
python version = 3.7.3 (default, Apr 2 2020, 13:02:51) [Clang 11.0.3 (clang-1103.0.32.29)]
which python /usr/bin/python
。
2. 创建软链接到路径的命令为:ln -s /usr/bin/python /usr/local/opt/python/bin/python2.7
。
export PATH="/Users/hss151/Library/Python/3.9/bin:$PATH"
这有点出乎意料。(确保你重新启动终端会话或者在你的IDE中加载你的.zprofile文件。) - Boyd Hemphill