26
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2 による Python3 の環境構築

Last updated at Posted at 2024-03-13

概要

WSL2 を使って,Python3 の実行環境を整備する方法をまとめました.
本記事では pip を用いた仮想環境を構築していきます.

  • 利用可能になるまでの所要時間
    • Python3:0分 ($\because$ インストール済み)
    • pip3:10分

  • 実行環境:Windows 11


WSL2 のインストール方法については以下の記事をご覧ください.

目次

  1. WSL2 上での Python3 の利用
  2. pip3によるライブラリ管理のための準備
  3. 仮想環境の構築
  4. 仮想環境下での pip3 を用いたライブラリ管理

1. WSL2 上での Python3 の利用

WSL2 では python3 がデフォルトで実装されており,インストール不要です.
試しに Ubuntu のターミナルから python3 --version と入力してみましょう.

Python
python3 --version
Python 3.10.12

デフォルトでは,バージョン 3.10.12 がインストールされているようです.
python の実行ファイルの在処は which -a python3.10 と入力することで確認できます.

Ubuntu
which -a python3.10
/usr/bin/python3.10
/bin/python3.10

ただし,matplotlib や pandas といった数値計算用ライブラリは揃っていないので,これらを以下で紹介する手順に沿ってインストールしていきます.

1-1. pyenv による python 自体のバージョン管理

大昔に作られた python コードの中には,まれに賞味期限切れのパッケージが含まれている場合があり,バージョンを適切に切り替えないと作動しない場合があります.
そこで,pyenv というパッケージを使った python のバージョン管理法をまとめておきます.

このパートは,以下の記事を引用させて頂きました.

pyenv をインストールする

まず,sudo apt update を実行しておきます.
次に,pyenv のインストールに必要なパッケージをインストールします(コピペで OK).

Ubuntu
sudo apt install build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev \
  libreadline-dev libsqlite3-dev libopencv-dev tk-dev git

github から pyenv を取り寄せます(コピペで OK).

Ubuntu
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

以下を実行し,~./bashrc に pyenv の実行を自動化させます.

Ubuntu
echo '' >> ~/.bashrc
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
source ~/.bashrc

pyenv -v と入力し,以下のような応答があればインストール完了です.

Ubuntu
pyenv -v
pyenv 2.3.36-18-g0167890c

なお,インストール先は ~/.pyenv 以下となります.

1-2. 任意の python バージョンをインストールする

入手可能な python バージョンは pyenv install --list で確認することができます.
とても長いですが,最初の方の数字だけの部分がバージョンを表します.

Ubuntu
pyenv install --list
~省略~
3.10.10
3.10.11
3.10.12
3.10.13
3.11.0
3.11-dev
3.11.1
3.11.2
3.11.3
3.11.4
3.11.5
3.11.6
3.11.7
3.11.8
3.12.0
~省略~

まず,pyenv install 欲しいバージョン を使ってインストールします(5分くらい掛かります).
例えば,3.12.0 をインストールしてみます.
インストール先は ~/.pyenv/versions/ 以下です.

Ubuntu
pyenv install 3.12.0

Downloading Python-3.12.0.tar.xz...
-> https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz
Installing Python-3.12.0...
Installed Python-3.12.0 to /home/ユーザー名/.pyenv/versions/3.12.0

pyenv versions と入力すると,インストール済みのバージョンを確認できます.

Ubuntu
pyenv versions

* system (set by /home/ユーザー名/.pyenv/version)
  3.12.0

1-3. python のバージョンを切り替える

現在有効な python のバージョンを確認するには pyenv version を使います.

Ubuntu
pyenv versions

* system (set by /home/ユーザー名/.pyenv/version)

まだ有効化されていないので何も表示されません.

システム全体のバージョンを切り替える場合

システム全体の python バージョンを切り替えるには pyenv global バージョン とします.

Ubuntu
pyenv global 3.12.0

改めて pyenv version を実行すると,無事 3.10.123.12.0 に切り替わっていることを確認できます.

Ubuntu
pyenv version
3.12.0 (set by /home/ユーザ名/.pyenv/version)

python3 --version
Python 3.12.0

なお,この設定は Ubuntu を再起動しても継続されます.
python3 --version で確認する場合は Ubuntu を再起動してください.

ローカルにバージョンを切り替える場合

ローカルに python のバージョンを切り替えるには,そのディレクトリに移動した後 pyenv local バージョン とします.

Ubuntu
pyenv local 3.12.0

この設定は Ubuntu を再起動すると消滅します.

以降は,WSL2 のデフォルト 3.10.12 を使って環境を構築していきます.
そのため,pvenv global 3.10.12 を実行してください.

2. pip3 によるライブラリ管理のための準備

複数のユーザーが同一のマシンを利用している場合では,ライブラリのバージョン齟齬が生じて大変面倒です.

そのような衝突などを避けるために,python の実行環境を新たに作成し,そのローカルな環境でライブラリ管理を行うことが一般的です.
このようなローカルな環境を「仮想環境」と言います.

python 自体のバージョン管理には pvenv を使います.
仮想環境の構築には,pipconda などのツールを用います.

本記事では,ライブラリ管理が簡単という点から pip を用いた方法を紹介します.
両者の違いは以下の記事などが参考になります.

2-1. pip3 のインストール

pip3 --version と入力し,以下のような応答があれば,既にインストールされています.

pip
pip3 --version
pip 23.0.1 from /home/ユーザー名/.pyenv/versions/3.10.12/lib/python3.10/site-packages/pip (python 3.10)

もしも pip3 をインストールするには,sudo apt install python3-pip と入力します.

Ubuntu
sudo apt install python3-pip

2-2. インストール済みのライブラリを確認する

pip3 list と入力すると,インストール済みのパッケージ名が一覧で表示されます.

pip
pip3 list
Package                Version
---------------------- -------------
contourpy       1.2.0
cycler          0.12.1
fonttools       4.49.0
kiwisolver      1.4.5
matplotlib      3.8.3
numpy           1.26.4
packaging       24.0
pillow          10.2.0
pip             23.0.1
python-dateutil 2.9.0.post0
setuptools      65.5.0

pip3 list --outdated と入力すると,上記のうち最新版でないパッケージが表示されます.

pip
pip3 list --outdated
Package            Version Latest Type
------------------ ------- ------ -----
fonttools  4.49.0  4.50.0 wheel
pip        23.0.1  24.0   wheel
setuptools 65.5.0  69.2.0 wheel

デフォルトのpipちゃんは古いバージョンなので,後で最新版に更新します.

3. 仮想環境の構築

myenv という名前の仮想環境を構築してみます.
myenv 以外の仮想環境名にする場合は,myenv を適当に読み替えてください.

1.仮想環境を作るために必要な venv というモジュールをインストールします.

Ubuntu
sudo apt install python3.10-venv

なお,pythonバージョン-venv としてください.

2.myenv という名前の仮想環境を,~/.local/bin/ というローカルな場所に設置します.

Python
python3 -m venv ~/.local/bin/myenv 

3-1. 仮想環境の有効化と無効化

source ~/.local/bin/myenv/bin/activate と入力すると,仮想環境が有効になります.

Ubuntu
ユーザー名:現在のPATH$ source ~/.local/bin/myenv/bin/activate 
(myenv) ユーザー名:現在のPATH$

仮想環境が有効になると,頭に (仮想環境名) が付きます.

仮想環境から脱出するには,deactivate と入力します.

Ubuntu
(myenv) ユーザー名:現在のPATH$ deactivate
ユーザー名:現在のPATH$

なお,Ubuntu を閉じると仮想環境から強制的に追い出されます.

3-2. Ubuntu 起動時に仮想環境を自動で開くように設定する

source ~/.local/bin/myenv/bin/activate と毎回打つのは面倒です.
そこで,Ubuntu 起動時に自動的で仮想環境が有効になるように設定しておきます.
具体的には,~/.bashrc の最後尾に以下を追記します.

Ubuntu
vim ~/.bashrc
# bashrc が開くので,最後尾に次を追記
source ~/.local/bin/myenv/bin/activate

Ubuntuを一旦閉じて,再度開いてみましょう.
自動で myenv が有効になっていることが確認できます.


なお,vim のコマンドは以下がとても参考になります.

4. 仮想環境下での pip3 を用いたライブラリ管理

準備

  • Ubuntu にログインして,仮想環境を有効にしてください
  • ~/.local/bin/myenv/lib/python3.10/site-packages に移動して中身を確認してください
Ubuntu
ls
_distutils_hack           pip                   pkg_resources  setuptools-59.6.0.dist-info
distutils-precedence.pth  pip-22.0.2.dist-info  setuptools

~/.local/bin/myenv/lib/python3.10/site-packages/ にライブラリが格納されます

4-1. python ライブラリの更新方法

手始めに,pip のバージョンを更新しましょう.
まず,仮想環境下にある pip のバージョンを調べてみます.

pip
pip3 list --outdated
Package    Version Latest Type
---------- ------- ------ -----
pip        22.0.2  24.0   wheel
setuptools 59.6.0  69.1.1 wheel

python ライブラリの更新には,pip3 install --upgrade ライブラリ名 と入力します.
pip 自身を更新する場合は,以下のようになります.

pip
pip3 install --upgrade pip

もしも PATH が通っていないと注意されたら,コチラを参考にしてください.
再度バージョンを確認すると,pip が無事消えていることが分かります.

pip
pip3 list --outdated
Package    Version Latest Type
---------- ------- ------ -----
setuptools 59.6.0  69.1.1 wheel

なお,バージョンを指定する場合は pip3 install ライブラリ名==バージョン と入力します.
例えば,上の最新版 pip 24.0 を元の 22.0.2 に戻す場合は以下のようにします.

pip
pip3 list # 現在のバージョンを確認
Package    Version
---------- -------
pip        24.0
setuptools 59.6.0

pip3 install pip==22.0.2
# 省略
Successfully installed pip-22.0.2

pip3 list # 再度バージョンを確認
Package    Version
---------- -------
pip        22.0.2
setuptools 59.6.0

4-2. python ライブラリのインストール方法

python ライブラリのインストールには pip3 install パッケージ名 と入力します.
例えば,matplotlib をインストールする場合は以下のようにします.

pip
pip3 install matplotlib
# 省略
Installing collected packages: six, pyparsing, pillow, packaging, numpy, kiwisolver, fonttools, cycler, python-dateutil, contourpy, matplotlib
Successfully installed contourpy-1.2.0 cycler-0.12.1 fonttools-4.49.0 kiwisolver-1.4.5 matplotlib-3.8.3 numpy-1.26.4 packaging-24.0 pillow-10.2.0 pyparsing-3.1.2 python-dateutil-2.9.0.post0 six-1.16.0

上の例では,matplotlib に付随する他のライブラリも幾つかインストールされたようです.
実際,pip3 list で見てみると,numpy なども追加されたことが確認できます.

pip
pip3 list
Package         Version
--------------- -----------
contourpy       1.2.0
cycler          0.12.1
fonttools       4.49.0
kiwisolver      1.4.5
matplotlib      3.8.3
numpy           1.26.4
packaging       24.0
pillow          10.2.0
pip             24.0
pyparsing       3.1.2
python-dateutil 2.9.0.post0
setuptools      69.1.1
six             1.16.0

なお,ライブラリのアンインストールには pip3 uninstall ライブラリ名 を実行します.

(おまけ) WSL2 における PATH の開通

現在の PATH 状況は echo $PATH で確認できます.

Ubuntu
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:続く…

各 PATH は,コロン区切りで表されています.

例えば,/home/ユーザ名/.local/bin を新たに追加する場合を考えます.

Ubuntu
export PATH="$PATH:/home/ユーザ名/.local/bin/"

改めて,echo $PATH を実行すると

Ubuntu
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:続く…/home/ユーザ名/.local/bin/

となり,指定した PATH をめでたく開通することができます.

PATH=$PATH:追加PATH のうち,$ マークを忘れると PATH が全部書き換わるので注意しましょう.

まとめ

WSL2 を使って,Python3 の実行環境を整備する方法を紹介しました.
pip3 による仮想環境を使って,大元の Python を汚さないように心掛けましょう.

また,WSL2 を使って Fortran 環境 (gfortran と Intel Fortran) を構築する方法をまとめた記事も書いているので,興味のある方はご覧ください.

参考文献

26
32
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?