前回の記事( https://blux.hatenablog.com/entry/2018/10/18/000347 )で多大な感謝と自分への戒めとして壮大なポエムを書いたわけですが、肝心の対応方法 を書いていなかった。
無事にpythonが使えるようになったかと思いきや、ansibleが動かなくなった。
ポエム記事しか書かなかった自分は、結局どうすればいいかわからなくなった。おい!
というわけで自分のメモ用に改めて書きます。
環境:ubuntu 16.04LTS
まずvirtualenv環境の作り方。
$ cd hoge $ virtualenv -p python3.5 ansiblevenv
この-pでpythonを指定しないとデフォルトのpython(例: /usr/bin/python)が使われてしまいます。
ちゃんとvirtualenv環境のpythonとpipが使われていることを確認します
$ which python3 $ /hoge/bin/python3 $ pip3 --version $ pip 18.1 from /hoge/ansiblevenv/lib/python3.5/site-packages/pip
ちなみに-pを忘れると以下のようになる。
$ which python3 $ /usr/bin/python3 $ pip3 --version $ pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)
pipのバージョンまじでNANDEYANEN
おそらくこれは私の環境が壊れているからだと思います。
これのせいで色々ハマったんだ…
さて、あとはvirtualenv環境でansibleをインストールします
$ source /hoge/ansiblevenv/bin/activate $ pip3 install ansible $ ansible --version ansible 2.7.1 config file = /hoge/.ansible.cfg configured module search path = ['/hoge/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /hoge/ansiblevenv/lib/python3.5/site-packages/ansible executable location = /hoge/ansiblevenv/bin/ansible python version = 3.5.2 (default, Nov 23 2017, 16:37:01)
はい!うまくansiblevenv環境内にansibleがインストールできましたね。
ほかにpipでインストールしたモジュールも同様に環境毎にインストールすると良いです。
ちなみにvirtualenvで新しい環境を作るときに古い記事だと
virtualenv --no-site-packages
と書いてありますが、今はグローバルサイトのパッケージ(例:/usr/lib/python2.7/site-packages)をデフォルトでインストールしない
という設定に変わったようなので、逆にグローバルサイトのパッケージをインストールしたい場合は以下のように指定します。
virtualenv --system-site-packages
詳しくは公式ドキュメントに記載されています。
User Guide — virtualenv 16.0.0 documentation
モヒカンのみんないつもありがと!!