(ana|mini)condaを使おうとするのは、Windowsにおいて大抵インストールの難しさで悪名高いScipy, Numpy系のインストールをする場合だと思うのだけれど、プロジェクトごとにvirtualenvで管理していたりする人にとっては仮想環境管理にまでcondaを使いたくないということがある。
condaはWindows側でビルドせずにバイナリで引っ張ってくるのでいろんなモジュールのインストールが上手くいくのだが、バイナリがなければpipを使ったりするようになっている*1。
ってことは、逆にScipyとかインストールするときだけcondaコマンド使えればいいんじゃない?って思うわけです。
Windows で
conda install -p %VIRTUAL_ENV% [モジュール名]
Linux で
conda install -p $VIRTUAL_ENV [モジュール名]
で行けます。virtualenvは %VIRTUAL_ENV% にフォルダへのパスを保存しているのでそこを指定してインストール。ちゃんとmatplotlibがこれで動くことを確認しました。
ただし、これの影響かどうか定かじゃないですが困ったことがあって、virtualenv 内でImportError: No module named 'pip'
って言われてpipが使えなくなったんです。Scriptsフォルダ内のpip3.exeをコピーしてpip.exeを上書きしたら問題なくなりました。あと、virtualenvは %VIRTUAL_ENV% 直下に python.exe 、Scriptsフォルダ内に他のスクリプトと分けていて、Pathにはどちらも追加する仕様なのですが、conda系はぜんぶ Scriptsフォルダにまとめてくる。
この点は conda 側に合わせて統一しました。%VIRTUAL_ENV% 直下のではcondaでインストールしたモジュールが使えなかったけど、Scriptsフォルダ内のpython.exeだとどちらも使えたので。理由はよく分かってないけれど。
しかもpip freeze
すれば双方のパッケージ出てくるし。素晴らしい。(まあ双方出てきちゃったら、次に環境構築するとき自動ってわけにはいかなくなるんだけどね。)
ちなみに conda のインストール
Linux の場合、Miniconda — Condaを参考に
wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh bash Miniconda2-latest-Linux-x86_64.sh
でインストールできる。対話式のインストールになっていて、最後 .bashrc にパスを通すコマンドを入れるか聞かれるのでyesという。でもそうすると venv 環境を上書きされるので、PYTHONHOME や PYTHONPATH を設定するとか、venv 環境を回復する必要がある。詳しくは要調査。