WSL2のUbuntuでPython 3.13をソースからビルドし、venv仮想環境を構築する方法
この記事では、WSL2上のUbuntu環境でPython 3.13をソースコードからビルドし、そのPythonを使って標準モジュールのvenvで仮想環境を作成する手順を、初心者~中級者向けにわかりやすく解説します。必要な依存パッケージのインストールから、Python 3.13のソースダウンロードとビルド、仮想環境のセットアップ、さらに仮想環境内での requests
パッケージのインストールと簡単な動作確認まで、一つひとつ丁寧に説明していきます。基本的にコピー&ペーストで実行できるコマンドを中心に進めていきますので、ぜひ手元で一緒に試してみてください。
前提条件
本記事の手順は、Windows 10/11上でWSL2を導入し、Ubuntu (例: 20.04 や 22.04) がセットアップされている環境を前提としています。Ubuntu上でインターネットに接続でき、 sudo
コマンドを利用できるユーザーで作業してください。特に断りがない限り、以降のコマンドは すべてWSL2上のUbuntuターミナルで実行 します。
必要な依存パッケージのインストール
まず、Pythonをソースからビルドするにはコンパイラや各種開発用ライブラリ (SSLや圧縮ライブラリなど) が必要です[1]。これらが不足しているとビルド途中でエラーになる可能性があるため、最初にAPTで必要なパッケージをインストールしておきましょう。以下のコマンドでビルドに必要なツールチェインおよびライブラリ類をまとめて導入できます。
% sudo apt update -y
% sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev \
libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
上記コマンドでは、ビルドに必要な基本的な開発ツール build-essential
(コンパイラやmake等) をはじめ、圧縮関連の zlib
/ libbz2
、データベース関連の libsqlite3
/ libgdbm
、SSL通信のための libssl
、READLINEサポート用の libreadline
、FFI用の libffi
などをインストールしています。これでPythonビルドに必要な下準備は完了です。
Python 3.13のダウンロードとビルド
次に、Python 3.13のソースコードを公式サイトからダウンロードしてビルドします。記事執筆時点での最新安定版はPython 3.13.3 (2025年4月8日リリース) です [2]。まずはターミナルでソースコードのアーカイブを取得しましょう (約30MB程度あります) 。
% wget https://www.python.org/ftp/python/3.13.3/Python-3.13.3.tgz
ダウンロードが完了したら、アーカイブを展開してソースディレクトリに移動します。
% tar -xf Python-3.13.3.tgz
% cd Python-3.13.3
それではビルドの準備を行います。Pythonのソースにはconfigureというシェルスクリプトが含まれており、これを実行すると現在のシステム環境に合わせたビルドの設定が自動的に行われます。オプションとして--enable-optimizationsを指定して最適化ビルドを有効にしましょう。これは、コンパイル時に追加のテストを実行して実行ファイルのパフォーマンスを向上させるためのオプションです[3]。
% ./configure --enable-optimizations
configure
スクリプトが正常に完了すると、Makefileが生成されます。続いて make
コマンドでPython本体をビルドします。ビルドには数分程度かかりますが、 -j
オプションを付けて並列コンパイルすることで高速化が可能です ( $(nproc)
はシステムの論理CPUコア数を取得するコマンドです) 。例えば以下のように実行すると、利用可能なCPUコアをすべて使ってビルドを行います。
% make -j$(nproc)
Tip: 処理能力に余裕がある場合は上記のように並列ビルドするとよいでしょう。コア数を指定しない場合 (単に
make
のみ実行) は逐次ビルドとなり、時間がかかります。ビルド中はCPUリソースを多く消費するため、PCのファンが回るかもしれませんが心配いりません。
ビルドが完了したら、最後にPython 3.13をシステムにインストールします。ここでは make install
ではなく、 make altinstall
というコマンドを使う点に注意してください。 altinstall
を使うことで、既存のシステムのデフォルトPythonコマンドを上書きしないようにインストールできます[4]。WSL2(Ubuntu)環境には元々別のバージョンのPython (例えば3.10など) が入っていますが、 altinstall
によりそれらは影響を受けず、新しい python3.13
コマンドとして並行インストールされます。
% sudo make altinstall
Note:
誤ってsudo make install
を実行しないようにしてください。make install
を使用すると/usr/bin/python
などシステム既定のPythonに関連するパスを上書きしてしまう可能性があります[4:1]。必ずaltinstallを利用しましょう。
インストール後、実行ファイルは /usr/local/bin/python3.13
(および対応する pip3.13
など) として配置されます。では、正しくインストールできたかバージョンを確認してみましょう。
% python3.13 --version
インストールが成功したか確認するために上記のように python3.13 --version
コマンドを実行してみてください。Python 3.13のバージョン情報 (例: Python 3.13.3
) が表示されればOKです[5]。これでシステムのPythonとは独立したPython 3.13実行環境がWSL2上に導入できました。
venvを使った仮想環境の作成
続いて、インストールしたばかりのPython 3.13を使って仮想環境を作成しましょう。仮想環境とは、プロジェクト毎に独立したパッケージインストール空間を提供してくれる仕組みです。仮想環境を利用することで、特定のプロジェクトで使うパッケージを他の環境やシステム全体に影響させずに管理できます。Python 3.13には標準で venv
モジュールが含まれているので、これを使わない手はありません。
まず、新しいプロジェクト用のディレクトリを作成し、その中へ移動しておきましょう (任意の場所で構いませんが、例としてホームディレクトリ直下に py13_test
というフォルダを作ります) 。
% mkdir ~/py13_test && cd ~/py13_test
それではPython 3.13で仮想環境を作成します。以下のコマンドで、カレントディレクトリに venv13
という名前の仮想環境用ディレクトリが作成されます (ディレクトリ名は任意ですが、ここではPython 3.13用と分かるよう venv13
としています) 。
% python3.13 -m venv venv13
コマンド実行後、プロジェクトディレクトリ内に venv13
というフォルダができていれば成功です。その中には仮想環境用のPython実行ファイルやpipなどのコマンドが配置されています。それでは仮想環境を有効化しましょう。以下のように source
コマンドでactivateスクリプトを読み込みます。
% source venv13/bin/activate
仮想環境をアクティブにすると、現在のシェルセッションでのpythonコマンドやpipコマンドが仮想環境専用のものに切り替わります[6]。また、プロンプトの先頭に(venv13)という環境名が表示されるはずです。試しにPythonのバージョンを確認してみましょう。
(venv13) % python --version
Python 3.13.3
ご覧のように、仮想環境を有効化すると python
コマンドでPython 3.13.3 (先ほどインストールしたバージョン) が使われています。これで仮想環境の準備は整いました。
Note: 仮想環境を終了したい場合は、ターミナル上でdeactivateコマンドを実行すれば元の環境に戻ります。仮想環境はシェルセッションを閉じても自動で無効化されます。再度利用する際は、再びsource venv13/bin/activateでアクティベートすればOKです。
仮想環境内でrequestsパッケージのインストール
仮想環境がアクティブになった状態では、pipを使ってインストールするパッケージはこの仮想環境内にのみ影響します。では、実際にパッケージをインストールしてみましょう。HTTP通信を行う際によく使われる定番パッケージである requests をインストールします。
(venv13) % pip install requests
上記コマンドを実行すると、pipがインターネットから requests
とその依存関係をダウンロードして仮想環境内にインストールします。処理が成功すれば、最後に Successfully installed ...
というメッセージが表示されます。例えば以下のような出力が得られるはずです。
Successfully installed certifi-2023.7.22 charset-normalizer-3.2.0 idna-3.4 requests-2.31.0 urllib3-2.0.2
(バージョン番号は環境によって異なる可能性がありますが、requests本体と必要な関連ライブラリがインストールされたことが分かります。)
これで仮想環境内に requests
パッケージが導入できました。仮想環境用のPythonにはpipも含まれており、以降はこの環境下で自由にパッケージを追加インストールすることができます。
セットアップの動作確認
最後に、インストールしたPython 3.13と requests
がきちんと動作するか、簡単なスクリプトで確認してみましょう。プロジェクトディレクトリ ( ~/py13_test
) にて、テキストエディタで新規にtest_requests.py
というファイルを作成し、以下の内容を入力して保存してください。
import requests
res = requests.get("https://www.example.com")
print("ステータスコード:", res.status_code)
このスクリプトは、 requests
を使って例示用サイトである example.com
にHTTP GETリクエストを送り、そのレスポンスステータスコードを表示するものです。では実行してみます。仮想環境をアクティブにした状態で以下のようにPythonスクリプトを実行してください。
(venv13) % python test_requests.py
問題なく通信が行われれば、ステータスコードがコンソールに出力されます。例として example.com
は正常にアクセスできるサイトなので、以下のようにステータスコード 200
が表示されれば成功です。
ステータスコード: 200
この結果は、Python 3.13環境が正しく構築され、仮想環境内にインストールした requests
パッケージも機能していることを示しています。
まとめ
以上、WSL2上のUbuntuでPython 3.13をソースからビルドし、venvによる仮想環境をセットアップして requests
の動作確認を行う手順をご紹介しました。振り返ると、
- 必要なビルド用ライブラリを
apt
でインストール - Python 3.13のソースコードを公式サイトからダウンロードしてビルド&インストール (
make altinstall
でシステムのPythonを保護) - 仮想環境を
python3.13 -m venv
で作成し、source
で有効化 - 仮想環境内で
pip install requests
を実行し、サードパーティ製パッケージをインストール - 簡単なスクリプトで新環境下のPythonとrequestsの動作確認
という流れでした。
このように進めれば、システムにプリインストールされているPythonに干渉することなく、最新のPython 3.13環境を自由に試すことができます。仮想環境を使うことで他のプロジェクトへの影響も心配無用です。ぜひこの環境上でPython 3.13の新機能を試したり、他のパッケージをインストールしてみたりして、WSL2でのPython開発を楽しんでみてください!
Discussion