当我使用setup.py安装它时,为什么找不到ansible?

kra*_*r65 5 python macos installation pip setup.py

因为我在使用Ansible(我在Mac上)时遇到了一些麻烦,而该问题似乎已在最新的开发人员版本中修复,所以我通过pip(sudo pip uninstall ansible)卸载了ansible,并使用经典的setup.py方法从github存储库中重新安装了最新的开发人员版本,这似乎成功结束了(这里全部输出)

因此,我尝试使用它:

$ ansible --version
-bash: ansible: command not found
$ which ansible
$
Run Code Online (Sandbox Code Playgroud)

我检查了它的安装位置。从上面链接的完整输出中,我发现它已安装在中/usr/local/lib/python2.7/site-packages,的确在其中找到了一个鸡蛋:

$ ls -l /usr/local/lib/python2.7/site-packages | grep ansible
drwxr-xr-x    4 root    admin     136 Aug 22 16:33 ansible-2.4.0-py2.7.egg
Run Code Online (Sandbox Code Playgroud)

当我启动Python并检查site-packages文件夹时,我发现了另一个文件夹:

>>> import site; print site.getsitepackages()[0]
/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

但这是指向同一文件夹的符号链接:

$ ls -l /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
lrwxr-xr-x  1 hielke  admin  54 Aug 13 22:36 /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages -> ../../../../../../../../../lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

所以我想问题是在中没有创建与ansible包的符号链接/usr/local/bin/。但是我不确定如何创建这样的符号链接,以及为什么它不会首先出现。

有人知道我可以从这里前进吗?欢迎所有提示!

rno*_*ris 25

当您ansible从 shell调用时,bash 将在您$PATH的文件中搜索名为 ansible 的可执行文件。这可能不是唯一的问题,但这是您看到的错误的直接原因。该.egg文件本身不是可执行文件,它只是用于分发代码的文件。

如果 ansible 已正确安装,您应该能够使用locate或 OSX Finder GUI找到它。名称应该完全匹配,没有文件扩展名。您可能还会在找到可执行文件的同一位置找到ansible-connectionansible-consoleansible。如果你找到了,太好了!测试一下并将该目录添加到您$PATH的终端中,如下所示:

export PATH=$PATH:/path/to/ansible
Run Code Online (Sandbox Code Playgroud)

哪里/path/to/ansible是哪里找到的可执行文件的目录。对$PATH变量的这种更改是暂时的,并且会在您关闭 shell 时消失。如果您现在可以从 bash 运行 ansible,那么您可以通过将该导出添加到$HOME/.bash_profile文件末尾或添加规则/etc/paths.d(Apple 推荐)来使更改永久化。如果您不熟悉它们,请在此处详细了解如何执行这些操作。

现在,如果这不是问题并且您找不到ansible可执行文件,那么安装本身就是您的问题。您也可以尝试使用虚拟环境(如果已安装)以确保您从 github 中提取的版本没有损坏:

git clone https://github.com/ansible/ansible.git
cd ansible
virtualenv venv
source venv/bin/activate
pip install .
which ansible
Run Code Online (Sandbox Code Playgroud)

在撰写本文时,上述内容为我提供了一个有效的ansible安装。


小智 16

查找 ansible 在 Mac 上的位置。大多数时候它的/Users/<yourusername>/Library/Python/3.7/bin or /Users/<yourusername>/Library/Python/2.7/bin。然后 ...

export PATH=$PATH:/Users/<yourusername>/Library/Python/3.7/bin
Run Code Online (Sandbox Code Playgroud)

您可以将其存储在您的.bashrc文件中。


swi*_*mer 10

对于使用 Windows 10 Ubuntu 终端的用户,运行此命令应该可以解决问题:

export PATH=$PATH:~/.local/bin
Run Code Online (Sandbox Code Playgroud)


cao*_*eng 5

好吧,我认为你只需要创建一个软链接

ln -s /Users/${yourname}/Library/Python/${python version}/bin/ansible /usr/local/bin/ansible


小智 5

pip3 install ansible --user
Run Code Online (Sandbox Code Playgroud)

这安装在 ~/.local 中。只需将其包含在 PATH 中即可,例如:export PATH="$PATH:~/.local/bin"