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
仮想環境を削除する場合は仮想環境のディレクトリを削除する.