はじめに
WSL2上にPython環境を構築したため、備忘録として記録する。
WSL2 関連
1. WSL2のインストール
インストール済みのため割愛
2. WSLのアップデート
PS > wsl --update
更新プログラムを確認しています。
Linux 用 Windows サブシステムの最新バージョンは既にインストールされています。
PS > wsl --version
WSL バージョン: 2.2.4.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.61
3. Ubuntu 24.04 LTSをインストール
PS > wsl --install -d Ubuntu-24.04
PS > ...
PS > wsl -l -v
NAME STATE VERSION
* Ubuntu-24.04 Running 2
4. Ubuntu 24.04の初期設定
$ sudo sed -i 's/\/\/archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list.d/ubuntu.sources
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install language-pack-en language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
$ echo $LANG
ja_JP.UTF8
uv 関連
1. uv のインストール
$ curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.4.13 x86_64-unknown-linux-gnu
installing to $HOME//.cargo/bin
uv
uvx
everything's installed!
To add $HOME/.cargo/bin to your PATH, either restart your shell or run:
source $HOME/.cargo/env (sh, bash, zsh)
source $HOME/.cargo/env.fish (fish)
2. Shell 補完の設定
$ echo 'eval "$(uv generate-shell-completion bash)"' >> ~/.bashrc
3. バージョンの確認
$ uv --version
uv 0.4.13
4. Python 仮想環境の作成
$ mkdir python_projects
$ cd python_projects
$ uv init test_project
$ cd test_project
$ pwd
$HOME/python_projects/test_project
例) beautifulsoup4 のインストール
$ uv add beautifulsoup4
Using Python 3.12.3 interpreter at: /usr/bin/python3.12
Creating virtual environment at: .venv
Resolved 3 packages in 58ms
Prepared 2 packages in 26ms
Installed 2 packages in 1ms
+ beautifulsoup4==4.12.3
+ soupsieve==2.6
VSCode との連携
1. 拡張機能のインストール
- Remote Development
2. Remote Development で WSL2上に先程作成したtest_project
を開く
- hello.pyが存在するため、以下の内容を記載
from bs4 import BeautifulSoup soup = BeautifulSoup("<p>Some<b>bad<i>HTML") print(soup.prettify())
- WSL環境上にPython拡張機能のインストールを実施
3. VSCodeが自動的に.venv
を認識するため、VSCodeのターミナルを起動し普段通りにPythonを実行する
$ python ./hello.py
<p>
Some
<b>
bad
<i>
HTML
</i>
</b>
</p>
Ruff の有効化
1. Ruff のインストール
$ uv tool install ruff
$ uv tool update-shell
2. VSCode へのRuff拡張機能のインストール
3. settings.json に Ruff 関連の設定を追加
{
"[python]": {
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
},
"editor.defaultFormatter": "charliermarsh.ruff"
},
"ruff.lineLength": 120,
"ruff.lint.ignore": [
"F401"
],
"ruff.lint.preview": true,
"ruff.lint.select": [
"C",
"E",
"F",
"W",
"I"
],
"ruff.logFile": "~/logs/ruff.log",
"ruff.logLevel": "debug",
"ruff.nativeServer": "on",
}
4. WSL2のログを確認
$ cat ruff.log
0.002372427s DEBUG ThreadId(04) ruff_server::session::index::ruff_settings: Ignored path via `exclude`: $HOME/python_projects/test_project/.venv
0.006645611s INFO ruff:main ruff_server::server: Configuration file watcher successfully registered
0.006686709s DEBUG ruff:worker:0 ruff_server::resolve: Included path via `include`: $HOME/python_projects/test_project/hello.py
25.151748855s INFO ruff:main ruff_server::server::connection: Shutdown request received. Waiting for an exit notification...
25.156159853s INFO ruff:main ruff_server::server::connection: Exit notification received. Server shutting down...
- Ruff が native language server で動作していることを確認