virtualenv使い方備忘録

前回の記事( 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

モヒカンのみんないつもありがと!!