今回はPythonのvenvについて、トラブルがあったので記録として残しておく。
環境
OS: Windows10 64bit
Anaconda3-2020.11x86 (Python3.8.4-conda base)
VSCode: x64-1.54.3
起こったこと
機械学習を学んでおり、古いWindows10 PCでAnacondaとJupyter notebookを多用していた。しかし老朽化したので新しいWindows10 PCを購入し、環境の移植を行った。
これからアプリケーション上で動くアルゴリズムを構築しようと考えていることもあり、jupyter notebookを卒業してVSCodeに乗り換えることを決意。ちょうどVSCodeがjupyter notebookに対応するようになったことも追い風になった。元々仮想環境を一切使わないという素人丸出しな状態だったので、心機一転使い方を勉強することに。
新PCを開き、まずはAnaconda3をインストール。続いてVSCodeをインストール。VSCodeでdropbox内に保管していた作業フォルダを開き、いざ仮想環境を作ろう!となったところで困った。コード自体はすぐに分かった。
python -m venv "環境名"
しかしターミナルにコードを入力しても、何回やっても新規ディレクトリが全く生成されない!しかもエラーが出ないしprint文は使えるので、どうやらpythonそのものはきちんと動いているらしい。なぜだ。ここから、夜の12時からGoogle検索を2時間ほど続ける羽目になった。(そして風邪を引いた)
解決策
結論だけ述べると、Anacondaが悪さをしていた。つまり、Anacondaを削除した後でPythonそのものを単体でインストールしたところ、何事もなく仮想環境の構築ができた。昔からpipとcondaの相性の悪さなどは聞いていたが、まさか自分が被害を被るとは・・・
察しのいい方は環境設定で気づかれたかもしれないが、通常のpythonをインストールしないまま、Anaconda同梱のpython.exeに頼っていたのである。これがいけなかった。そんなんわかるわけないやん・・・
所感
どうして私がハマったかというと、古いPCではAnacondaを入れた状態でも普通にvenvが使えていたからである。
今思えば通常のpythonとAnacondaを両方インストールしていたので、何事もなく動いてしまったのであろう。また、初めてpythonに触れたのが2018年に受講したpython+機械学習セミナーだったため、Anacondaをインストールするように言われてjupyter notebookを使うのが当たり前だと思い込んでしまっていた。
どんなに検索しても、「venvで仮想環境の構築が簡単にできるよ!」という記事しか出てこない。途中で思わず壁にマウスを投げつけそうになった。解決の糸口になったのは、「Anaconda venv 相性悪い」と検索して出てきた記事だった。それは「Anacondaがとあるライブラリとバッティングしたのでアンインストールした」というものだった。直接venvとは関係ない内容だったが、それを見てハッとした。Anacondaを消せば、いけるんじゃないか。
空から一筋の光が差した気分だった。空から降りてくる蜘蛛の糸を目の当たりにしたカンダタの気持ちもかくや、である。
こういう環境設定のちょっとしたところこそ大きな落とし穴があると思う。教科書には絶対に書いてない(というか書けない)し、初心者が自己診断するにはハードルが高すぎる。下手したらここで挫折して一生トラウマになっていたかもしれない。私のようなひどい目に会う人が一人でも減ることを祈っている。