WLS2 + Anaconda + PyCharm によるPythonの環境構築


以前の記事で、WLS+VS Codeを使ってPythonの環境構築をした。しかしUdemyの講義を進めていくうちに、WLS2 + Anaconda + PyCharmでもっと良い環境を作りたいと思い立ったので、記しておく。

まず参考にしたUdemyの講義とそれぞれの環境を記す。

OS Ubuntu 20.04 LTS
仮想環境 Pythonのvenvコマンド
エディタ Visual Studio Code
OS Windows10
仮想環境 Anacondaのcreateコマンド
エディタ PyCharm

前者の環境はWSLを使ってLinuxのOSを使うことができるのがメリットであり、後者はAnacondaで簡単に仮想環境を構築し、かつPyCharmでデバックやGitによるバージョン管理など便利な機能が備わっていることがメリットである。

そこで、この2つの良いとこどりをしたい!という発想に至った。ついでにWSLはWSL2という新しいバージョンが使えるようなので、こちらも更新しておく。結果、WLS2 + Anaconda + PyCharmという環境が出来上がった。

更新に先立って、もともとインストールしてあったUbuntu 20.04 LTSとPyCharmはアンインストールした。

WSLからWSL2への更新

Windows Subsystem for Linux(WSL)は、WindowsでLinuxを使えるようにするためのものである。講義をきっかけに利用するようになったが、WSL2という新しいバージョンがあることを後から知った。というのも、Linuxディストリビューション(Ubuntuなど)をWindowsにダウンロードしても、自動的にWSL2が使えるようになるわけではなく、インストール前にいくつかの設定を済ませておく必要があるからだ。

WSLのままでも十分問題ないが、WSL2に変えるメリットはある。その一つとして、Virtual Machine(VM)という仕組みを使うことが挙げられる。これにより、今まで以上にLinuxとの互換性が高まり、流行りのDockerも使うことができる1

1. Windows10が最新かを確認する

さて、更新の動機ができたところでWSL2の設定に移る。基本的にはMicrosoftのドキュメント2にしたがうだけで特に難しいところはない。

WSL2を使うためにはWindowsのバージョンが1903以上、ビルドが18362以上である必要がある。Windowsキー + rでRunを開き、winverと入力してEnterを押せば、今のバージョンとビルドを確認することができる。要件を満たしていなければWindows Update Assistantで更新をする。

今回は要件を満たしていたため次に進む。

2. Windows機能の有効化

WSL2を使うために、Windows Subsystem for LinuxVirtual Machineという機能を有効化する。もともとWSLを使っていればWindows Subsystem for Linuxは既に有効化されているので省略できるが、一応方法を記しておく。コントロールパネルからも有効化は可能であるが、今回はPowerShellを使う。

PowerShellを管理者として起動し、次のコマンドをそれぞれ実行してPCを再起動すると、有効化が完了する。

PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

3. カーネルコンポーネントのアップデート

以下のリンクにアクセスすると最新のカーネルコンポーネントを入手することができる。指示にしたがってアップデートをおこなえばよい。

4. WSL2をデフォルトのバージョンに設定する

再びPowerShellを開き、以下のコマンドを実行する。これで、次回からLinuxディストリビューションがインストールされたときにはWSL2を使用することになる。

PowerShell
wsl --set-default-version 2

5. Linuxディストリビューションをインストール

これで準備が整ったので、Microsoft StoreからLinuxディストリビューションをインストールする。

以前の記事と同じくUbuntu 20.04 LTSをインストールし、usernameとpasswordの設定、日本語化をおこなった。

6. バージョン確認

最後に、WSL2の設定になっているか確認する。コマンドプロンプトを開き、wsl --list --verboseを実行すると、確かにバージョン2になっていることがわかる。

>wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2

UbuntuにAnacondaをインストール

もともとWindows版のAnacondaはインストールしてあったが、今回はUbuntuでAnacondaをインストールする。つまり、Linux版のAnacondaをインストールすることになる。これで、以前の記事では慣れないコマンドに困惑した仮想環境の構築が容易になる。

Linux版のインストールなので、Chromeから普通に検索してダウンロードしてもうまくいかない。そこで、Ubuntuのターミナルから直接インストーラをダウンロードする方法をとる3

AnacondaのホームページからIndivisual Editionを探し、Linuxの64-Bit (x86) Installerのリンクのアドレスをコピーする。そのアドレスをwgetコマンドの後ろに書けばよい。

$ wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

ダウンロードが完了したら、bashコマンドでアドレスの "Anaconda3~" 以下を実行する。

$ bash Anaconda3-2020.11-Linux-x86_64.sh

すると、利用規約や保存場所の確認などが次々に現れるので、yesEnterでサクサク進めると、インストールが完了する。

インストールが完了したら、.bashrcへの変更内容を反映させる(Ubuntuの再起動でも可)。

$ source ~/.bashrc

この状態でバージョンを確認すると、無事にインストールが確認できる。

$ conda -V
conda 4.9.2

なお、.bashrcを再読み込みした後から、コマンドラインの先頭に(base)という文字が表示され鬱陶しい。Ubuntuを再起動しても表示されたままである。調べてみるとauto_activate_baseTrueになっているからのようだ4。以下のコマンドを実行し、$ source ~/.bashrcで再読み込み、またはUbuntuの再起動で解決する。

$ conda config --set auto_activate_base False

あとは今まで通り、Ubuntuのターミナルからconda create -n 仮想環境名 python=バージョン名で仮想環境を構築すればよい。Ancondaでの仮想環境の構築は以下を参照。

【初心者向け】Anacondaで仮想環境を作ってみる

PyChermでWSLを利用する

Linux版Anacondaのインストールも完了し、実現したいことはほぼ終わった。以前の記事で、Visual Studio CodeにおけるWSLの設定をおこなったので、これを使えばいいのだが、どうせならより高機能なPyCharmを利用したい。

PyCharmのガイダンス5によれば、WSLなどのリモート開発環境の使用はProfessional版に限定されるようだ。がっかりだと思ったのも束の間、学生を含め教育機関に所属する人ならPyCharmをはじめとするJetBrainsのサービスが無料で使えるようだ6。幸運なことに私は学生なので、早速これを利用する。

JetBrainsのページ (https://www.jetbrains.com/ja-jp/community/education/#students) から「今すぐ申し込む」を選択し、アカウント登録をする。このメールアドレスに.ac.jpで終わる大学のメールアドレスを登録する。すると登録したアドレス宛にメールが届くので、記載されているリンクをクリックすれば認証が完了する。

Windows版(Linuxではなく)のPyChermインストーラーをダウンロードし、インストールを開始する。初めにメールアドレスと登録したパスワードを聞かれるので、無料のライセンスを登録したアカウントでログインする。これでProfessional版の利用を開始できる。

あとはPyChermのガイド5に沿って設定をおこなう。

PyCharmを開きFileSettingProjectPython Interpreterを選択する。

Python Interpreterは<No interpreter>となっている。その右側にある設定マークからAdd...を選択 → 左側のペインからWSLを選択 → Linux Distributionに Ubuntu 20.04 → Python interpreter pathに\\wsl$\Ubuntu-20.04\home\ユーザー名\anaconda3\envs\仮想環境名など、目的に合った環境を選ぶ。

今まではWindowsとUbuntuの両方を使っていたため、講義によって環境を使い分ける必要があったが、PyChermだけで簡単に切り替えができるようになった。今後も良さそうな環境があればアップデートしていきたい。

Udemyの講義は環境構築を学ぼうと思って申し込んだわけではないが、たまたま違う環境を使っていたので、とても役に立った。念のため再びリンクを張っておく。