Windows 10 の Ubuntu on WSL に Python の開発環境を作る

Python を勉強するために、Windows 10 の WSL で Python の開発環境を作ってみましたので、メモしておきます。

環境

インストールするもの

Visual Studio Code

エディタとして、Visual Studio Code をインストールします。
以下からダウンロードして、インストール。

WSL

WSL(Windows Subsystem for Linux) をインストールしましょう。
詳細は割愛しますが、以下のような要領です。

  1. コントロールパネルの「プログラムと機能」を開く
  2. Windowsの機能の有効化または無効化」を開く
  3. Windows Subsystem for Linux」にチェックを入れる

Ubuntu

WSL で動かす Ubuntu をインストールしましょう。
詳細は割愛しますが、以下のような要領です。

  1. Microsoft Store アプリを起動する
  2. Ubuntu」で検索する
  3. 表示された「Ubuntu」をインストールする

バージョン確認

Ubuntu をインストールしたら、スタートメニューから「Ubuntu」をクリックします。
ターミナルが起動してきますので、バージョンなどを確認しておきましょう。

$ more /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

パッケージのアップデート

取り急ぎ、パッケージをアップデートしておきます。

$ sudo apt update
$ sudo apt upgrade -y

Python のインストール

WSL にインストールした Ubuntu に、Python の環境を作ります。
ここから先の操作は、Ubuntu のターミナルでの操作になります。

ディフォルト状態

Python 本体は、ディフォルトでインストールされています。

$ python -V
Python 2.7.17
$ python3 -V
Python 3.6.9

このまま使っても構わないのですが、複数のバージョンを使えるように pyenv というツールを使ってみます。

Python の環境管理ツール pyenv

pyenv という環境管理ツールを入れておくことで、複数のバージョンの Python を切り替えて使うことができます。

pyenv のインストール

以下のような感じでインストールします。

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

インストーラーを実行すると、最後に以下の説明が出ていました。

WARNING: seems you still have not added 'pyenv' to the load path.

# Load pyenv automatically by adding
# the following to ~/.bashrc:

export PATH="/home/<user>/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

素直に設定しておきましょう。
<user>の部分は、Ubuntu にログインしているユーザー名に読み替えてください。

$ vi ~/.bashrc
※末尾に以下を追加する
export PATH="/home/<user>/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

.bashrc に設定を追加したら、一度ログアウトして、ログインしなおしておきましょう。
その後、pyenv のバージョンを確認しておきます。
表示されたらうまくインストールされています。

$ pyenv -v
pyenv 1.2.18

必要パッケージのインストール

pyenv で Python をインストールする前に、必要なパッケージをインストールしておきましょう。
詳細は以下に書かれています。

インストールしておきます。

$ sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

Python のインストール、切り替え

pyenv を使って管理できる Python を一覧表示するには、以下のようにコマンドを実行します。
いっぱい表示されます。

$ pyenv install --list

2020年5月5日時点の最新版 3.8.2 をインストールしてみます。

$ pyenv install 3.8.2
$ pyenv versions
* system (set by /home/naoto-izutsu/.pyenv/version)
  3.8.2

無事にインストールできました。
この段階では、Ubuntu にディフォルトでインストールされている Python(system) が使用される状態になっていますので、インストールした 3.8.2 に切り替えてみます。

$ python --version
Python 2.7.17
$ pyenv global 3.8.2
$ python --version
Python 3.8.2

無事に切り替わりました。

仮想環境の設定

Pythonを実行するための仮想環境を作成します。
仮想環境を管理するツールはいくつかあるようですが、Python に標準でついている venvを使ってみます。

仮想環境の作成

「app01」という名前で仮想環境を作成する場合は、以下のような感じになります。
コマンドを実行すると、カレントディレクトリに仮想環境の名前と同じ名前のディレクトリが生成されます。

$ cd ~/python\project
$ python -m venv app01
$ ls -l
$ ls -l
total 0
drwxrwxrwx 1 xxxxx yyyyy 4096 May  5 19:11 app01

仮想環境の有効化

作成した仮想環境を使うには、activateを行います。
activateコマンドは、生成されたディレクトリの中にあります。

$ source app01/bin/activate
(app01)$

仮想環境が有効化されると、プロンプトの前に仮想環境名が表示されるようになります。

では、仮想環境を有効化して、必要なパッケージなどをインストールしてみます。
取り急ぎ、pip をアップグレードしておきます。

$ source app01/bin/activate
(app01)$ pip list
Package    Version
---------- -------
pip        19.2.3 
setuptools 41.2.0 
WARNING: You are using pip version 19.2.3, however version 20.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

$ pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/54/2e/df11ea7e23e7e761d484ed3740285a34e38548cf2bad2bed3dd5768ec8b9/pip-20.1-py2.py3-none-any.whl (1.5MB)
     |████████████████████████████████| 1.5MB 370kB/s 
Installing collected packages: pip
  Found existing installation: pip 19.2.3
    Uninstalling pip-19.2.3:
      Successfully uninstalled pip-19.2.3
Successfully installed pip-20.1

$ pip list
Package    Version
---------- -------
pip        20.1
setuptools 41.2.0

pip が、19.2.3 -> 20.1 へバージョンアップされました。

仮想環境の無効化

有効化した仮想環境を無効化したい場合は、deactivate を実行します。

(app01)$ source deactivate
$

仮想環境が無効化されると、プロンプトに表示されていた仮想環境名の表示が消えます。
無効化すると、OS 全体の Python 環境に戻りますので、仮想環境で実施した pip のバージョンアップは反映されていません。

$ pip list
Package    Version
---------- -------
pip        19.2.3 
setuptools 41.2.0 

仮想環境の削除

作成した仮想環境を削除したい場合は、作成されたディレクトリを削除すればOKです。

$ rm -r app01

仮想環境の初期化

仮想環境を初期化したい場合は「venv --clear」とします。
いろいろ触ってしまった仮想環境を綺麗にしたい場合に、仮想環境を削除して作り直すことなく綺麗な状態に戻すことができます。

$ python -m venv --clear app01

まとめ

Windows 10 の WSL で動いている Ubuntu に、Python の環境を作成してみました。
開発するプログラムに合わせて仮想環境を用意して、その中で開発するのがよいのだと思います。

WSL の UbuntuVisual Studio Code を連携させれば、開発したプログラムをすぐに動かして動作を確認することができたりしますのでとても便利だと思います。
Visual Studio Code との連携は、また別途まとめようと思います。