WindowsでWSL 2を使ってPython開発

プログラミング

WindowsでWSL 2を活用したPython開発

Windows環境において、WSL 2 (Windows Subsystem for Linux 2) はPython開発者にとって非常に強力なツールとなります。WSL 2は、Windows上でLinuxディストリビューション(Ubuntu、Debianなど)をネイティブに近いパフォーマンスで実行できる技術です。これにより、Windowsの使いやすさとLinuxの強力な開発環境を両立させることが可能になります。

WSL 2とは何か

WSL 2は、WSLの第2世代にあたり、仮想化技術(軽量ユーティリティ仮想マシン)を用いてLinuxカーネルを直接実行します。これにより、WSL 1よりも大幅に高いパフォーマンスと完全なシステムコール互換性を実現しました。特に、ファイルI/Oの速度が向上しており、Python開発におけるパッケージのインストールやスクリプトの実行速度に直結します。

WSL 2をPython開発に利用するメリット

  • クロスプラットフォーム開発の容易さ: 多くのWebフレームワークやライブラリはLinux環境を前提として開発・テストされていることが多いため、WSL 2を利用することで、開発環境を本番環境に近づけることができます。
  • 豊富な開発ツールの利用: LinuxにはPython開発に役立つ多くのコマンドラインツールやライブラリが容易に利用できます。
  • パフォーマンスの向上: WSL 1と比較して、ファイルアクセス速度などが劇的に向上し、開発効率を高めます。
  • Dockerとの連携: WSL 2はDocker Desktop for Windowsとシームレスに連携するため、コンテナベースの開発ワークフローを容易に構築できます。
  • OS間のファイル共有: /mnt/c のようなパスを通じてWindowsのファイルシステムにアクセスできるため、既存のWindows上のリソースをそのまま活用できます。

WSL 2のセットアップとPython環境構築

WSL 2のセットアップは比較的簡単です。まず、Windowsの「Windowsの機能」から「Linux 用 Windows サブシステム」と「仮想マシン プラットフォーム」を有効にする必要があります。その後、Microsoft Storeから好みのLinuxディストリビューション(例: Ubuntu)をインストールします。インストール後、ディストリビューションを起動し、初期設定を行います。

Pythonのインストール

WSL 2上でPythonをインストールする方法はいくつかあります。

aptパッケージマネージャーを利用する場合

UbuntuなどのDebian系ディストリビューションでは、aptコマンドを使用してPythonをインストールするのが一般的です。

sudo apt update
sudo apt install python3 python3-pip python3-venv

これにより、Python 3とpip(パッケージインストーラー)、そして仮想環境を作成するためのvenvがインストールされます。

pyenvを利用する場合

複数のPythonバージョンを管理したい場合は、pyenvが非常に便利です。まず、pyenvをインストールするための依存関係をインストールします。

sudo apt update
sudo apt install -y make 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 python3-openssl git

次に、pyenvをGitHubからクローンし、シェル設定ファイル(.bashrc.zshrcなど)にパスを通します。

curl https://pyenv.run | bash

その後、pyenv install <version>コマンドで任意のPythonバージョンをインストールし、pyenv global <version>でデフォルトバージョンを設定します。

仮想環境の利用

Python開発においては、プロジェクトごとに独立した環境を構築するために仮想環境の利用が強く推奨されます。venvモジュールやconda(Anaconda/Miniconda)を利用するのが一般的です。

venvの場合

プロジェクトディレクトリに移動し、以下のコマンドで仮想環境を作成します。

python3 -m venv .venv
source .venv/bin/activate

これにより、仮想環境が有効化され、その環境にインストールされたパッケージはグローバルなPython環境とは分離されます。

condaの場合

AnacondaやMinicondaをWSL 2にインストールすると、condaコマンドが利用可能になります。condaは、Pythonだけでなく、Rなどの他の言語や科学技術計算ライブラリも管理できる強力なパッケージマネージャーです。

# Minincodaのダウンロードとインストール例
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc # あるいは ~/.zshrc

仮想環境の作成は以下のようになります。

conda create -n myenv python=3.9
conda activate myenv

VS Codeとの連携

Visual Studio Code (VS Code) は、WSL 2環境でのPython開発において非常に人気のあるエディターです。VS Codeは「Remote – WSL」拡張機能を提供しており、これをインストールすることで、WSL 2上のLinux環境に直接接続し、IDEとして利用できます。

Remote – WSL 拡張機能

VS Codeの拡張機能マーケットプレイスから「Remote – WSL」を検索してインストールします。インストール後、VS Codeの左下にあるリモートエクスプローラーアイコンをクリックし、「WSL」を選択して、WSL 2ディストリビューションに接続します。これにより、VS CodeはWSL 2内のファイルシステムを直接操作し、PythonインタープリターやデバッガーもWSL 2上で実行されるようになります。

WSL 2におけるファイルアクセスとパフォーマンス

WSL 2では、Windowsファイルシステム(/mnt/cなど)へのアクセスは可能ですが、Linuxファイルシステム(WSL 2ディストリビューションのルートファイルシステム)へのアクセスと比較してパフォーマンスが低下する傾向があります。Pythonプロジェクトのコードや依存関係は、WSL 2のLinuxファイルシステム内に置くことを強く推奨します。これにより、スクリプトの実行速度やパッケージのインストール速度が大幅に向上します。

よくある課題と解決策

  • WSL 2の起動が遅い: systemd を有効化することで、一部のディストリビューションの起動速度を改善できる場合があります。
  • ネットワークの問題: .wslconfig ファイルでネットワーク設定を調整することで、接続の問題を解決できることがあります。
  • GUIアプリケーションの実行: WSLg (Windows Subsystem for Linux GUI) により、WSL 2上でGUIアプリケーションを実行することが可能になりました。

まとめ

WSL 2は、WindowsユーザーがLinuxの強力な開発環境を享受するための革新的なソリューションです。Python開発においては、そのパフォーマンス、互換性、そしてVS Codeなどのツールとの連携により、開発効率と体験を飛躍的に向上させます。本番環境との一貫性を保ちたい、あるいはLinuxで利用できる豊富なツールを活用したいPython開発者にとって、WSL 2の導入は非常に価値のある選択肢と言えるでしょう。