メモ)WSL版Anaconda導入済みの上に更にWindows版Anacondaを導入した
WSLのUbuntuにAnacondaが入っているWindows10に、さらにWindows版Anacondaを入れたメモ。
目次
以前の投稿で、Windows10HomeにWSLのUbuntu版Anacondaをインストールしたことを書きました。
【WSL】Ubuntu側にAnacondaを入れた - よちよちpython
今回は、更にWindows版のAnacondaをインストールしましたのでメモしておきます。
つまりPCにAnacondaが2つ入っている状態。
Windows版を入れた理由は、WSLの方のAnacondaでVSCodeのインテリセンスやマウスポインタを置くと型情報などが表示される通常の動作が動かなくて、単なる普通のエディタになってしまっていたため。だからといって困ることも無いっちゃないが、VSCodeの本領を発揮できていないのはもったいない。色々いじってみたが直らない。
「エイヤッ!Windows版もインストールしてしまえっ!」と勢いでインストール。
いくつも入れると環境変数パスの競合など起きそうで良くないかも、とは思いましたが、やってみないと分かりません。
Windows10にAnacondaを直にインストール
既にWSL:Ubuntu版のAnacondaが入った状態からスタートします。
インストール方法
Anacondaのインストール方法自体は簡単で、Anacondaの公式サイトにブラウザでアクセスし、Windows用のsetupインストーラーをダウンロードしてインストール実行するだけ。
こちらのサイト⇒Windows版Anacondaのインストール: Python環境構築ガイド - python.jp では画像入りで親切に説明されていますので参考にしました。アンインストール方法も載っています。
でインストール成功後、早速問題発生。
Windows Terminal で「condaコマンドが認識されません」と怒られた
(Anaconda Promptではできます。)
インストール後に出てくる(ダイアログで☑チェックを入れたりするアレ)を全てデフォルトでOKした。しかし、どうやらパスが通っていないっぽい。普通デフォルトでパスを通さない設定になってる?
パスを通す方法の詳細は省略しますが、まず「Anaconda prompt」か「Anaconda Powershell Prompt」を起動して
PS: > where conda
などとコマンド実行するとconda
のパスが3つ出てきた。それをパスを通す方法で「システムの詳細設定」⇒「システムのプロパティ」ダイアログ⇒「環境変数」⇒「システムの環境変数」の「Path」に3つ別々に追加すればOK。
WindowsTerminal、PowerShell、VSCodeのターミナルでコマンドが実行できない
ある設定を省略した場合、PowershellやVSCode上のターミナルなどでコマンドを実行すると以下のようなエラーが出る。
. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\test1\Documents\WindowsPowerShell\profile.ps1 を読み込むこと ができません。詳細については、「about_Execution_Policies」 (https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。 発生場所 行:1 文字:3 . 'C:\Users\test1\Documents\WindowsPowerShell\profile.ps1' ~~~~~~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
次のコマンドをPowershellかWindowsTerminalから実行する。
PS > Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
一回このコマンドを打てば、次からは問題なくなる。
これをやっておかないとVSCode上のターミナルでも上手く機能しなかった。
インストールの参考にしたWindows版Anacondaのインストール: Python環境構築ガイド - python.jp には「PowerShellの設定」という章にちゃんと書いてあるのを無視してしまっていた為に起こった。
ターミナルでcondaコマンド実行確認
WindowsTerminalやPowerShellを起動し、condaコマンドが動くか確認してみます。
PS > conda info -e # Anacondaの仮想環境一覧を見るコマンドです。
仮想環境を作っていない場合は、デフォルトで作られる「base」という仮想環境が表示される。
こんな感じで↓
PS > conda info -e base * C:\Users\ユーザー名\anaconda3
こんなのが出ればOK。condaコマンドが使えることが確認できた。
パスが通っていなかったりPowerShellの設定を省いていたりすると再び上に書いたように
「condaコマンドが認識されない」と怒られたり、
このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\ユーザー名\Documents\WindowsPowerShell\profile.ps1 を読み込むこと ができません。
といった症状が出る。
こうなったらパス通しをやり直し、
PS > Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
を実行しなおす。
Windows版AnacondaのVSCodeのターミナルが動くか確認
VSCodeはWSLのAnacondaもWindows版AnacondaもWindowsに直で1つだけ入れている状況です。
上の「パス通し」と「Set-ExecutionPolicyコマンド」をやっていない状態だと、VSCodeのターミナルを起動した時点でのターミナルはWSLのbashが自動的に立ち上がっていた。リモートを繋げようともしている風。
だがしかし、WSLを起動していないので動くわけがないし、PowerShellが起動してくれないと困る。
上の設定をやったあとで
PS > code . # 作業ディレクトリでVSCodeを開くコマンド
を実行すると、
PS > code . Installing VS Code Server for x64 なんちゃらかんちゃら
と、インストールが始まる。これが完了すれば、VSCodeのターミナルがPowerShellで開くようになり、condaコマンドも他のコマンドも動かせるようになった。
インテリセンスも動く。よし。
WSLからVSCodeのターミナルが動くか確認
最後に、WSLの方のVSCodeがちゃんと動くか確認する。
PS > wsl
これでWSLで入れて設定してある既定のLinuxが起動する。私の場合はUbuntuだけ入れているのでUbuntuが既定になっている。
「PS C:\Users\カレントディレクトリ名 >」と表示されていたプロンプトがLinuxの表示方法に変わる。
VSCodeを起動する。
$ code . # wslでLinuxを起動させてから
VSCodeが起動し、リモートでWSLに接続している表示が出る。拡張機能の読込などが済めばOK。
インテリセンスが動くようになり、マウスポインタを置いたところの型情報やメソッドが表示されるようになった。ラッキー♪
VSCode上で「ターミナル」を開いて「bash」など設定しているものが開けばOK。コマンドが動くかどうか適当に確認して完了。
さいごに
以前に公式のPythonとAnacondaをPCに入れて動かなくなったことがあるので、あまり色々いれると良くないだろうと思っていたが、今のところ問題なく動いている。
オススメできないけど、一応できたということでメモまで。