概要
WSL2 を使って,Python3 の実行環境を整備する方法をまとめました.
本記事では pip を用いた仮想環境を構築していきます.
- 利用可能になるまでの所要時間
- Python3:0分 ($\because$ インストール済み)
- pip3:10分
- 実行環境:Windows 11
WSL2 のインストール方法については以下の記事をご覧ください.
目次
1. WSL2 上での Python3 の利用
WSL2 では python3 がデフォルトで実装されており,インストール不要です.
試しに Ubuntu のターミナルから python3 --version
と入力してみましょう.
python3 --version
Python 3.10.12
デフォルトでは,バージョン 3.10.12
がインストールされているようです.
python の実行ファイルの在処は which -a python3.10
と入力することで確認できます.
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).
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).
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
以下を実行し,~./bashrc
に pyenv の実行を自動化させます.
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
と入力し,以下のような応答があればインストール完了です.
pyenv -v
pyenv 2.3.36-18-g0167890c
なお,インストール先は ~/.pyenv
以下となります.
1-2. 任意の python バージョンをインストールする
入手可能な python バージョンは pyenv install --list
で確認することができます.
とても長いですが,最初の方の数字だけの部分がバージョンを表します.
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/
以下です.
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
と入力すると,インストール済みのバージョンを確認できます.
pyenv versions
* system (set by /home/ユーザー名/.pyenv/version)
3.12.0
1-3. python のバージョンを切り替える
現在有効な python のバージョンを確認するには pyenv version
を使います.
pyenv versions
* system (set by /home/ユーザー名/.pyenv/version)
まだ有効化されていないので何も表示されません.
システム全体のバージョンを切り替える場合
システム全体の python バージョンを切り替えるには pyenv global バージョン
とします.
pyenv global 3.12.0
改めて pyenv version
を実行すると,無事 3.10.12
が 3.12.0
に切り替わっていることを確認できます.
pyenv version
3.12.0 (set by /home/ユーザ名/.pyenv/version)
python3 --version
Python 3.12.0
なお,この設定は Ubuntu を再起動しても継続されます.
python3 --version
で確認する場合は Ubuntu を再起動してください.
ローカルにバージョンを切り替える場合
ローカルに python のバージョンを切り替えるには,そのディレクトリに移動した後 pyenv local バージョン
とします.
pyenv local 3.12.0
この設定は Ubuntu を再起動すると消滅します.
以降は,WSL2 のデフォルト 3.10.12
を使って環境を構築していきます.
そのため,pvenv global 3.10.12
を実行してください.
2. pip3 によるライブラリ管理のための準備
複数のユーザーが同一のマシンを利用している場合では,ライブラリのバージョン齟齬が生じて大変面倒です.
そのような衝突などを避けるために,python の実行環境を新たに作成し,そのローカルな環境でライブラリ管理を行うことが一般的です.
このようなローカルな環境を「仮想環境」と言います.
python 自体のバージョン管理には pvenv を使います.
仮想環境の構築には,pip や conda などのツールを用います.
本記事では,ライブラリ管理が簡単という点から pip を用いた方法を紹介します.
両者の違いは以下の記事などが参考になります.
2-1. pip3 のインストール
pip3 --version
と入力し,以下のような応答があれば,既にインストールされています.
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
と入力します.
sudo apt install python3-pip
2-2. インストール済みのライブラリを確認する
pip3 list
と入力すると,インストール済みのパッケージ名が一覧で表示されます.
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
と入力すると,上記のうち最新版でないパッケージが表示されます.
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 というモジュールをインストールします.
sudo apt install python3.10-venv
なお,pythonバージョン-venv
としてください.
2.myenv という名前の仮想環境を,~/.local/bin/
というローカルな場所に設置します.
python3 -m venv ~/.local/bin/myenv
3-1. 仮想環境の有効化と無効化
source ~/.local/bin/myenv/bin/activate
と入力すると,仮想環境が有効になります.
ユーザー名:現在のPATH$ source ~/.local/bin/myenv/bin/activate
(myenv) ユーザー名:現在のPATH$
仮想環境が有効になると,頭に (仮想環境名) が付きます.
仮想環境から脱出するには,deactivate
と入力します.
(myenv) ユーザー名:現在のPATH$ deactivate
ユーザー名:現在のPATH$
なお,Ubuntu を閉じると仮想環境から強制的に追い出されます.
3-2. Ubuntu 起動時に仮想環境を自動で開くように設定する
source ~/.local/bin/myenv/bin/activate
と毎回打つのは面倒です.
そこで,Ubuntu 起動時に自動的で仮想環境が有効になるように設定しておきます.
具体的には,~/.bashrc
の最後尾に以下を追記します.
vim ~/.bashrc
# bashrc が開くので,最後尾に次を追記
source ~/.local/bin/myenv/bin/activate
Ubuntuを一旦閉じて,再度開いてみましょう.
自動で myenv が有効になっていることが確認できます.
なお,vim のコマンドは以下がとても参考になります.
4. 仮想環境下での pip3 を用いたライブラリ管理
準備
- Ubuntu にログインして,仮想環境を有効にしてください
-
~/.local/bin/myenv/lib/python3.10/site-packages
に移動して中身を確認してください
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 のバージョンを調べてみます.
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 自身を更新する場合は,以下のようになります.
pip3 install --upgrade pip
もしも PATH が通っていないと注意されたら,コチラを参考にしてください.
再度バージョンを確認すると,pip が無事消えていることが分かります.
pip3 list --outdated
Package Version Latest Type
---------- ------- ------ -----
setuptools 59.6.0 69.1.1 wheel
なお,バージョンを指定する場合は pip3 install ライブラリ名==バージョン
と入力します.
例えば,上の最新版 pip 24.0 を元の 22.0.2 に戻す場合は以下のようにします.
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 をインストールする場合は以下のようにします.
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 なども追加されたことが確認できます.
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
で確認できます.
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:続く…
各 PATH は,コロン区切りで表されています.
例えば,/home/ユーザ名/.local/bin
を新たに追加する場合を考えます.
export PATH="$PATH:/home/ユーザ名/.local/bin/"
改めて,echo $PATH
を実行すると
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) を構築する方法をまとめた記事も書いているので,興味のある方はご覧ください.
参考文献
- (公式) pip
- (公式) anaconda
- 'pip'と'conda'は何が違うのか? (Qiita @toto1310)
- conda と pip の違い (Zenn @Len)
- (公式) venv
- よく使う Vim のコマンドまとめ (Qiita @hide)
- (公式) matplolib
- pip の使い方 (エンベーダ―)
- よく使うpipコマンド (Qiita @Masaaki_Inaba)
- Pythonの環境構築をマスターする(pyenv,venv)(WSL2,Ubuntu利用)(poetry追記) (Zenn @taiga)
- Pythonで開発するための準備 (Qiita @ynack)
- WSL2のubuntuでaliasの設定をする (Heisen TechBlog)
- 【Linux】環境変数の設定方法と注意点 (ICTDoctor)
- pvenv (github)
- Ubuntuにpyenvをインストール (Zenn @hr0t15)