先ほどこんなことを書きました。
次はmacOSにAnsibleを入れようと思ったのですが、HomebrewのFormulaで入れるとPython2が必要なので、python@2というFormulaが追加されます。まとめると次のバージョンがシステムに存在する状態になります。
以前のバージョンのHomebrewでpython Formulaが追加されていると、Homebrew 1.6への更新でpython FormulaはPython 3.xに更新されます。そこら辺の事情は以下のブログ記事にまとまっています。
つまりこうなります。
- macOSにインストール済みのpython (2.7.10)
- Homebrewでインストールされたpython@2 (2.7.14)
- Homebrewでインストールされたpython , python@3 (3.6.5)
そして言い忘れていましたが、私はパッケージ版のPython 3をインストールしています。 つまり、全部で4つのバージョンのPythonがインストールされた状態になっています。
- macOSにインストール済みのpython (2.7.10)
- Homebrewでインストールされたpython@2 (2.7.14)
- Homebrewでインストールされたpython , python@3 (3.6.5)
- Python公式インストーラーでインストールしたpython3 (3.6.5)
「Homebrewでインストールされたpython (2.7.14)」はHomebrew版Ansibleを使う限り必要ですし、python Formulaが必要なFormulaをインストールしようとした場合はHomebrewがインストールしてしまうので、ごちゃごちゃした状態は解決できません。Pythonを呼び出すたびに、「お前はどこの子のPythonだ」という状態が続く感じです。 だから、本来はpyenvとか使うんでしょうね。
macOSにAnsibleをインストールする
brew install ansible
を実行するだけで簡単に導入できていいのですが、Ansible公式の手順に従って、pipでインストールしてみました。この方法でインストールしたAnsibleはPython 3.6で動くので、Homebrew版のPythonは不要になります。といわけで不要なバージョンのPythonも削除できたし、以前書いたpipの問題も解決できてすっきりしました。
% brew uninstall ansible python@2 python % pip3 install ansible % ansible --version ansible 2.5.1 config file = None configured module search path = ['/Users/ytooyama/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ansible executable location = /Library/Frameworks/Python.framework/Versions/3.6/bin/ansible python version = 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] % pip -V pip 10.0.1 from /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip (python 3.6) % pip3 -V pip 10.0.1 from /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pip (python 3.6)