
Windows × WSL×VSCodeでPython開発環境構築
こんにちは、MOFUです。
個人PCはMacなのですが、業務PCはWindowsのことが多いです。
現場が変わるたびに調べて設定していたのでここにまとめておくことにします。
WSLのインストール
WSL (Windows Subsystem for Linux)はWindows上で直接Linuxのコマンドやツールを使えるようにする仮想化技術です。
特徴は
LinuxベースのWeb開発やプログラミングをWindows上で行える
Linuxのコマンドやシェルスクリプトを実行できる
LinuxベースのDBをWindowsで扱える
従来の仮想マシンと比べて軽量
WindowsとLinuxのファイルシステムを簡単に共有できる
Windows Power Shellを管理者権限で開く
Windows Power Shellアプリのアイコンを右クリックして、「管理者権限で実行」を選択します。パスワードの入力を求められます。
インストールコマンドの実行
wsl --install
を実行するとUbuntuのインストールが始まります。
特定のディストリビューションをインストールしたい場合は、
# 利用可能なディストリビューションを確認
wsl --list --online
# 特定のディストリビューションをインストール
wsl --install -d <ディストリビューション名>
インストールに失敗する場合は、
Windowsのバージョンが最新か(Windows Updateを確認)
BIOSで仮想化が有効になっているか
Windows機能の「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」が有効になっているか
を確認してください。
再起動を求められます。
インストールの完了とユーザー登録
再起動後、自動的にUbuntuのインストールが始まります。
完了したら、「Ubuntu」アプリを開きます。
初回はユーザー名とパスワードの設定を求められるので入力します。
次回からは、WSLインストール時に設定したユーザーでログインします。
もしrootでログインしている場合は、以下の方法で指定したユーザーに切り替えます。
# 既存ユーザーに切り替える
su ユーザー名
# 新しいユーザーを作成する場合
adduser 新しいユーザー名
デフォルトユーザーを変更したい場合は、
ubuntu config --default-user ユーザー名
rootユーザーで操作しない理由
誤操作のリスク
rootはシステム全体に対して完全な権限を持つため、誤って重要なシステムファイルを削除・変更してしまうリスクがあります。
通常ユーザーであれば、システムファイルの変更には明示的に権限昇格(sudo)が必要なため、誤操作を防げます
セキュリティリスク
マルウェアなどの悪意のあるプログラムがroot権限で実行されると、システム全体が危険にさらされます。
通常ユーザーで実行すれば、被害を最小限に抑えられます。
ベストプラクティス
必要な時だけsudoで一時的に権限を昇格する方が、操作の記録が残り、安全です。
日常的な操作は通常ユーザーで行い、システム設定変更など必要な時だけsudoを使用するのがLinux/UNIXの標準的な運用方法です。
うまくいかないときには
「wsl --install」でうまくいかないときは下記のリンクを参考にして手動で設定を進めます。
Windows 11で「wsl --install」がうまく動作しないのは、典型的には以下のような状況が考えられます:
以前にWSLの一部機能がインストールされていた、または不完全なインストールが残っている状態
Windowsの特定の機能がシステムポリシーや設定で無効化されている
Windows Update経由でWSLの機能が正しく更新されていない
この場合、手動でのインストール手順が必要になるのは、システムを「クリーンな状態」から順番に構築していくためです。
Linux 用 Windows サブシステムを有効にする
WSLをインストールする前に、Windowsに必要な機能を追加する必要があります。
PowerShellを管理者として開き、下記コマンドを実行します。
このコマンドは、現在稼働中のWindows(/online)に対して、Linux用Windows サブシステムという機能(featurename)を有効化する指示を出しています。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
仮想マシンの機能を有効にする
下記コマンドを実行します。これは仮想マシンのプラットフォームを有効にするコマンドで、WSL2がLinuxを動かすために必要な機能です。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
この2つのコマンドを実行したら、いったんパソコンを再起動します。
Linux カーネル更新プログラム パッケージをダウンロードする
再起動後、WSL2のLinuxカーネルという核となる部分をアップデートする必要があります。MicrosoftのWebサイトからWSL2 Linuxカーネルアップデートパッケージをダウンロードしてインストールします。
x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ
WSL 2 を既定のバージョンとして設定する
下記コマンドを実行して、WSLのバージョン2を既定として設定します。これで、新しくインストールするLinuxは自動的にWSL2として動作するようになります。
wsl --set-default-version 2
選択した Linux ディストリビューションをインストールする
Microsoft Store からUbuntuなどの好きなLinuxディストリビューションをインストールします。初回起動時には、ユーザー名とパスワードの設定を求められますが、これは今後Linuxを使用する際のログイン情報となります。
VSCodeのインストール
VSCode(Visual Studio Code)は、Microsoftが開発した無料のコードエディタです。
様々なプログラミング言語に対応しています。
シンタックスハイライト(コードの色分け表示)やコード補完機能があり、プログラミングがしやすいです。
また、必要な機能を拡張機能(プラグイン)で追加可能です。
コードの管理ツールであるGitもVSCode上でcommitやpushなどの操作が可能です。
現在、最も人気のある開発環境の1つで、プログラミング初心者から上級者まで幅広く使用されています。Windows、Mac、Linuxで利用可能です。
上記サイトからインストールします。
VSCode上でWSLを開く
最も簡単な方法
VSCodeで左下の緑色のアイコンをクリックし、「WSL」または「WSL:Ubuntu」を選択する。
コマンドパレットを使う方法
Ctrl + Shift + P でコマンドパレットを開く
「WSL」と入力
「WSL: New WSL Window」を選択
WSLのディレクトリを直接開く場合
VSCodeに「WSL」拡張機能をインストールし、WSL上でコマンドを実行します。
VSCodeの拡張機能タブを開く(左側のアイコン)
「WSL」で検索
Microsoftの「WSL」拡張機能をインストール
WSL上で下記コマンドを実行
# WSL側で実行
cd 作業ディレクトリ
code .
Pythonのインストール
以降のコマンド操作はWSL上でもいいですし、VSCodeの「ターミナル」上でもOKです。
まず、システムを最新の状態に更新します。
# システムを最新状態に更新
sudo apt update
sudo apt upgrade
つぎに、pythonをインストールします。
下記コマンドを実行すると、Python本体とpip(パッケージ管理)、venv(仮想環境)、dev(開発ツール)が一度にインストールされます。
sudo apt install python3 python3-pip python3-venv python3-dev
インストールされているpythonのバージョンを確認するには、
python3 --version
仮想環境の作成
仮想環境を作成
下記コマンドを実行して仮想環境を作成します。
# プロジェクトのディレクトリに移動
cd プロジェクトディレクトリ
# 仮想環境を作成(pythonenvは仮想環境の名前)
python3 -m venv pythonenv
プロジェクトのディレクトリに「pythonenv」というディレクトリができているはずです。ここにインストールしたライブラリの情報などが格納されます。
仮想環境の有効化
# 仮想環境を有効化
source pythonenv/bin/activate
有効化されると、プロンプトの先頭に (pythonenv) が表示されます。
ライブラリのインストール
# 個別のライブラリをインストール
pip install ライブラリ名
個別に一つ一つインストールしてもいいですが、requirements.txtというテキストファイルにインストールしたいライブラリ名を記載して、まとめてインストールもできます。
# requirements.txtからインストール
pip install -r requirements.txt
現在インストールされているパッケージ一覧を確認
pip list
パッケージ一覧をrequirements.txtに出力
pip freeze > requirements.txt