Microsoftは、「Visual Studio Code」向けPython拡張機能の「July 2020」リリースを公開した。15件の機能強化、27件の問題修正などが行われている。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2020年7月16日(米国時間)、コードエディタ「Visual Studio Code」(以下、VS Code)向けPython拡張機能の「July 2020」リリースを公開したと発表した。
Python拡張機能は、Visual Studio Marketplaceからダウンロードするか、Visual Studio Codeの拡張機能ギャラリーから直接インストールできる。Python拡張機能をインストール済みの場合は、Python拡張機能ビューでVS Codeを再起動することで、July 2020リリースに移行できる。
July 2020リリースでは、15件の機能強化、27件の問題修正、15件のコード改善が行われた。主な強化点は、新しい言語サーバ「Pylance」のサポート、新しい実験的な拡張機能「Gather」のサポート、ノートブックのHTMLやPDFへのエクスポート、リバース接続によるリモートデバッガセッションの簡単な開始だ。以下ではこれらの概要を紹介する。
2020年6月末に発表されたVS Code向け拡張機能であるPylanceは、Microsoftの静的型チェックツール「Pyright」をベースにした言語サーバだ。自動インポート、デッドコード検出、パラメーター情報の提供、マルチルートワークスペースのサポート、コンテキストハイライトなど、Pythonコード作成を支援する多くの機能を提供する。
PylanceはPyrightの機能を全て含んでおり、Microsoftは、Pyright拡張機能をインストール済みのユーザーに、アンインストールしてPylance拡張機能をインストールするよう勧めている。
Pylanceは従来の言語サーバ「Microsoft Python Language Server」と比べて、VS CodeでのPython IntelliSense機能が大幅に向上している。Microsoftは将来的に、Python拡張機能でのMicrosoft Python Language Serverのサポートを終了する計画であり、この言語サーバのユーザーにPylanceを試すよう勧めている。
Gatherは、ノートブック内で必要なコード依存関係を分析、判定し、コードのクリーンアップを行うことで、面倒で時間のかかる作業を自動化する。Microsoftはこの実験的な拡張機能の精度向上に向けて、コミュニティーにフィードバックを募っている。
Python拡張機能のJuly 2020リリースでは、既存ノートブックをHTMLやPDFにエクスポートできるようになり、ノートブックの共有やプレゼンテーションがボタンクリックで簡単に行えるようになった。なお、PDFにエクスポートするには、TeXのインストールが必要になる。
VS CodeにおけるPythonデバッガ「ptvsd」をPythonプロセスやリモートマシンに接続する場合、接続リクエストをリッスンするようにリモートPythonプロセスをセットアップし、VS Codeでデバッガセッションを開始する必要がある。だが、接続を適切なタイミングで行うのは難しかった。
Python拡張機能のJuly 2020リリースでは、リバース接続ができるようにデバッガを構成できるようになった。特定のアドレス(ポート番号またはホストとポートのタプル)で接続するようにリモートPythonプロセスをセットアップし、そのアドレスでのリッスンを開始するようVS Codeで接続を構成することで、そのプロセスへの接続を実現することが可能だ。
例えば、次のスクリプトを実行し、
import debugpy debugpy.connect(('localhost',5678)) debugpy.breakpoint() print("debugger stops here")
VS Codeで次の内容のlaunch.json構成を追加できる。
{ "name": "Python: Attach using listen", "type": "python", "request": "attach", "listen": { "host": "127.0.0.1", "port": 5678 }, },
これにより、VS Codeでデバッガを開始し、接続リクエストのリッスンを開始できる。Pythonプロセスを開始すると、デバッガは、定義されたブレークポイントで停止する。
Copyright © ITmedia, Inc. All Rights Reserved.