anaconda で venv を使ってみる
macOS(Sierra) 上で pyenv(1.1.3) + anaconda(anaconda3-4.4.0) をインストールしたマシンで venv による仮想環境を作ってみる.
conda で仮想環境を作ることもできる.しかしpyenvとの併用だとactivateの利用でシェルが落ちる.
qiita.com
シェル設定でも回避できるが,別の方法を知っておきたい.
Python3だけしか使う予定がないならば標準の仮想環境であるvenvを使う方が筋がよいと思われる.そのためここで使い方を記録しておく.
今は tensorflow 用の仮想環境を作りたいのでそのためのディレクトリを仮想環境として作る
28.3. venv — 仮想環境の作成 — Python 3.6.1 ドキュメント
$ pyenv local anaconda3-4.4.0 $ python --version Python 3.6.1 :: Anaconda 4.4.0 (x86_64)
新しい仮想環境を作る(ここでは tensorflow という名称にする).
実行するとtensorflowという名称のサブディレクトリができる.
# 仮想環境の作成(エラー発生) $ python -m venv tensorflow Error: Command '['/Users/fooUser/work/hogeDir/tensorflow/bin/python', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
エラーが出る.これは ensurepip が含まれていないため,ということらしい.
anaconda では仮想環境として conda を使用することを想定しているためそうなっているらしい(たぶん).
(この時点ですでに venv に anaconda は筋悪なのであるが,とりあえずこれでやる)
github.com
そこで anaconda のpython でvenvを使う場合は
Installation — pip 9.0.1 documentation
のページから get-pip.py をダウンロードし,これを用いて仮想環境内で pip をインストールする.
# 一旦ディレクトリを消してやり直す
$ ls
tensorflow
$ rm -rf tensorflow
# 仮想環境の作成(pipなし)
$ python -m venv tensorflow --without-pip
# get-pip.py の取得
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1558k 100 1558k 0 0 2940k 0 --:--:-- --:--:-- --:--:-- 2939k
# ファイル確認
$ ls
get-pip.py tensorflow
$ cd tensorflow
$ ls bin/
activate activate.csh activate.fish python python3
# 仮想環境の起動.
$ source bin/activate
# 仮想環境に pip をインストール.
# ここでfooPC,fooUser はそれぞれその時の端末名,ユーザ名ということで,気にしない
(tensorflow) fooPC:tensorflow fooUser$ python ../get-pip.py
Collecting pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
100% |████████████████████████████████| 1.3MB 490kB/s
Collecting setuptools
Using cached setuptools-36.2.7-py2.py3-none-any.whl
Collecting wheel
Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
100% |████████████████████████████████| 71kB 4.3MB/s
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-9.0.1 setuptools-36.2.7 wheel-0.29.0
# pip が仮想環境のディレクトリにインストールされていることを確認
(tensorflow) fooPC:tensorflow fooUser$ ls bin/
activate easy_install pip3 python3
activate.csh easy_install-3.6 pip3.6 wheel
activate.fish pip python
# pipでインストールされているパッケージの表示.警告が出るので --format オプションの指定が必要らしい.
(tensorflow) fooPC:tensorflow fooUser$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.1)
setuptools (36.2.7)
wheel (0.29.0)
(tensorflow) fooPC:tensorflow fooUser$ pip list --format=legacy
pip (9.0.1)
setuptools (36.2.7)
wheel (0.29.0)
(tensorflow) fooPC:tensorflow fooUser$ pip list --format=columns
Package Version
---------- -------
pip 9.0.1
setuptools 36.2.7
wheel 0.29.0
pip が使えるようになったら,tensorflowをインストール.
# tensorflow のインストール
(tensorflow) fooPC:tensorflow fooUser$ pip install tensorflow
Collecting tensorflow
Using cached tensorflow-1.2.1-cp36-cp36m-macosx_10_11_x86_64.whl
Collecting html5lib==0.9999999 (from tensorflow)
Collecting markdown>=2.6.8 (from tensorflow)
Requirement already satisfied: wheel>=0.26 in ./lib/python3.6/site-packages (from tensorflow)
Collecting werkzeug>=0.11.10 (from tensorflow)
Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB)
100% |████████████████████████████████| 317kB 1.4MB/s
Collecting bleach==1.5.0 (from tensorflow)
Downloading bleach-1.5.0-py2.py3-none-any.whl
Collecting backports.weakref==1.0rc1 (from tensorflow)
Using cached backports.weakref-1.0rc1-py3-none-any.whl
Collecting protobuf>=3.2.0 (from tensorflow)
Collecting six>=1.10.0 (from tensorflow)
Downloading six-1.10.0-py2.py3-none-any.whl
Collecting numpy>=1.11.0 (from tensorflow)
Using cached numpy-1.13.1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Requirement already satisfied: setuptools in ./lib/python3.6/site-packages (from protobuf>=3.2.0->tensorflow)
Installing collected packages: six, html5lib, markdown, werkzeug, bleach, backports.weakref, protobuf, numpy, tensorflow
Successfully installed backports.weakref-1.0rc1 bleach-1.5.0 html5lib-0.9999999 markdown-2.6.8 numpy-1.13.1 protobuf-3.3.0 six-1.10.0 tensorflow-1.2.1 werkzeug-0.12.2
# インストール済みパッケージの確認
(tensorflow) fooPC:tensorflow fooUser$ pip list --format=columns
Package Version
----------------- ---------
backports.weakref 1.0rc1
bleach 1.5.0
html5lib 0.9999999
Markdown 2.6.8
numpy 1.13.1
pip 9.0.1
protobuf 3.3.0
setuptools 36.2.7
six 1.10.0
tensorflow 1.2.1
Werkzeug 0.12.2
wheel 0.29.0
# 仮想環境を抜ける
(tensorflow) fooPC:tensorflow fooUser$ deactivate
# 元の(仮想ではない)環境では tensorflow がインストールされていないままであることを確認
$ pip list --format=columns | grep tensorflow仮想環境を削除する場合は仮想環境のディレクトリを削除する.