自分だけのクイズ作成 - Quipha公開中

【VS Code】DockerのPython環境でリモート開発

VS Code
スポンサーリンク

はじめに

みなさんプログラミングの際にVS Codeを使っていますでしょうか。
私はよく使っています!

とても軽量ですし、必要最低限の機能はもちろん、ソースの管理や、デバッグ、強力な拡張機能など、非常に気にっております。

まだ正式版の機能ではありませんが、VS Codeがリモート開発に対応したということで試してみました。

Dockerを使いPython環境を用意し、VS Codeでリモートデバッグを行います。

わざわざローカルに実行環境(例えばAnaconda等)を用意しなくても、リモート先で直接開発ができるためとても便利ですね!

環境

  • Windows10
  • Visual Studio Code Insiders(1.35.0-insider)
  • Docker – Python

参考

ちなみにPHPのリモート開発については、Qiitaに記事を投稿しました。

VS CodeでDockerのPHP環境でリモート開発 - Qiita
はじめに みなさんプログラミングの際にVS Codeを使っていますでしょうか。 私はよく使っています とても軽量ですし、必要最低限の機能はもちろん、ソースの管理や、デバッグ、強力な拡張機能など、非常に気にっております。 まだ...

VS Codeインストール

今のところ本機能(リモート開発)は正式版ではないので、Insidersビルドをダウンロードします。

Download Visual Studio Code Insiders
For early adopters, you can get the latest release of VS Code each day with the Insiders Build. Available on Mac, Linux and Windows.

私は「.zip」の64bit版をダウンロードしました。

起動と拡張機能のインストール

zipファイル解凍後、「Code – Insiders.exe」をダブルクリックし起動します。

以下の拡張機能をインストールします。

Remote Development - Visual Studio Marketplace
Extension for Visual Studio Code - An extension pack that lets you open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code'...

VS Code上から拡張機能を検索し、「Remote Development」をインストールします。

スポンサーリンク

Dockerの用意

今回はWindowsを使用しており、WindowsにDockerをインストールしました。
インストール後、Dockerの共有フォルダの設定も行います。
以前書いた記事を参考にしてください。

Pythonプロジェクトの用意

前回スクレイピングの記事をまとめました。
この環境をVS CodeからDockerのコンテナへリモートデバッグを行います。

任意のフォルダを作成します。

vscode-remote-scraping-python

ファイル構成は以下です。
Pythonファイルは何でも良いですが、前回の記事を参考にしてください。

/
├ download.py
├ analysis1.py
├ analysis2.py
└ .devcontainer/
  ├ devcontainer.json
  └ Dockerfile
└ .vscode
  └ launch.json

devcontainer.jsonの中身を以下のようにしました。
Dockerfileで作成ということと、拡張機能のインストールを記述します。

{
	"name": "Python Sample",
	"dockerFile": "Dockerfile",
	"extensions": [
		"ms-python.python"
	]
}

Dockerfileを定義します。
自分で作成したスクレイピング用のイメージを使用しました。
今回はコンテナ上でデバッグするので、pylintもインストールします。

FROM chigusaweb/python-scraping

# Install pylint
RUN pip install pylint

launch.jsonを以下のようにしました。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Scraping",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "internalConsole"
        }
    ]
}

VS Codeの準備

VS Codeの左下の緑のアイコンをクリックします。

Remote-Containers: Open Folder in Container…を選択します。

その後、先程作成したフォルダを選択します。
プロジェクトにはDockerの設定も含まれているため、初回起動時にはコンテナが自動で作成されます。

以下のようにVS Codeが表示されました。

Pythonデバッグ

前回スクレイピングで作成したPythonファイルを開きます。

import os
from urllib.request import urlretrieve

print("ダウンロード開始")

# HTMLファイル 保存先のディレクトリ
save_dir = os.path.dirname(os.path.abspath(__file__)) + "/html/"

# 存在しなければディレクトリ作成
if not os.path.exists(save_dir): 
    os.mkdir(save_dir)

# htmlをダウンロードするURL
# ここでは千草ウェブのトップページ
download_url = "https://chigusa-web.com/"

# 保存先
save_file = save_dir + "/chigusa.html"

# ダウンロード
urlretrieve(download_url, save_file)

print("ダウンロード完了")

ライブラリにマウスオーバーしてみると、Dockerコンテナ上のPython環境のライブラリのドキュメントが表示されています。
当然ながらVS Codeを実行しているWindowsにはPython環境は入っていません。

F5を押してデバッグしてみます。
きちんとブレークポイントで止まりますし、os.pathの値がDocker上のパスであることが確認できます。

/workspaces/vscode-remote-scraping-python/

きちんと前回の記事と同じく、実行ができました。

さいごに

VS Codeのリモート開発は素晴らしいですね!
ただ現状、やや不安定なイメージがありました。
(エラーが発生したり、上手く構築できなかったりなど・・)
まだ正式版ではありませんが、今後に期待です😊

コメント

タイトルとURLをコピーしました