Pythonでプログラムを開発する上では仮想環境は欠かせません。でも、その管理はわずらわしいものでもあります。でも、Environments拡張機能があれば、そのわずらわしさともサヨナラできる……かも?
筆者はよくVisual Studio Code(以下、VS Code)のアップデートが出るたびにその新機能を確認することがあります。といっても、全体の特徴を追うのは大変なので、主にPython関係の拡張機能がどうなったかを見ることが多いのですが。
Pythonの拡張機能については『Microsoft for Python Developers Blog』が詳しいのですが、ここ何か月間か、Python拡張機能がアップデートされるたびに、熱を持って取り上げられていたのがPython Environments拡張機能です。
アップデートの内容を見ながら、「仮想環境を管理するものなんだろうけど、よく分からん」と思うことがよくあったので、今回、ちょっとその内容をまとめてみることにしました。気を付けてほしいのは、この拡張機能、まだプレビュー段階ってところです。とはいえ、正式リリースされたら、毎日のようにお世話になるかもしれません。早めにチェックしておきましょう。なお、以下では「Environments拡張機能」と書くことにします。
どうもHPかわさきです。
この記事を書き始めてから気付きました。Environments拡張機能の評価がすごーく低いことに……。Deep Insider AI Practiceでお届けすべきなのかどうなのか。不安しかない……。
さて、この拡張機能、どんなものでしょう。
簡単にまとめちゃいましょう。Environments拡張機能とは「VS Codeで現在開いているワークスペースの実行環境を管理するためのもの」です。ワークスペースとは単一のフォルダ(とその下に広がる階層フォルダ)のこともあれば、マルチルートで複数のプロジェクトを横断的に1つのワークスペースとして扱うこともありますよね。こうした環境でプロジェクトごとにグローバル環境やさまざまな仮想環境から、どれを実行環境とするかを切り替えたり、仮想環境を新規に作成したり、あるいは新規にプロジェクトそのものを作成したりといったことができます。
Environments拡張機能でできることを以下に幾つか挙げていきましょう。
多分、これら以外にもまだまだ機能はあると思いますが、筆者がちょっとだけですが、触ったのはこの辺の機能です。プレビュー段階なので、これからも機能が追加されたりするなど、 洗練されていくものと思います。
サポートされている環境としてリポジトリでは以下のようなものが挙げられています(一部抜粋)。
これを見て「え? uvないの?」と思った方もいらっしゃるでしょう。でも、安心してください。以下はワークスペースに「uv venv」で仮想環境を構築している「uv_proj」フォルダを追加して、それをEnvironments拡張機能のUIにある[Python Projects]ビューで表示したところです。
[uv_proj]の下に[uv_proj (3.14.2)]とありますが、その横には「uv」と書かれていることに気が付いたでしょうか。どうやらuvも何らかの形でサポートされているようです。ちなみにその下の[Environment Managers]ビューにはグローバルにインストールされているPythonバージョン、現在のワークスペースで作成されている仮想環境、condaで作成している仮想環境が一覧されています。ここにも[uv_proj (3.14.2) uv]とあるのが分かります。
ちなみにこのEnvironments拡張機能によって表示されるUI([Python Projects]ビューと[Environment Managers]ビュー)はVS Codeの設定で"python.useEnvironmentsExtension"をtrueに設定する必要があります。
というわけで、次に[Python Projects]ビューと[Environment Managers]ビューについて簡単に紹介します。
[Python Projects]ビューには現在、ワークスペースで開かれているプロジェクト(フォルダ)の一覧と、プロジェクトごとにその実行環境が表示されます。
気が付きましたが、cond_projの実行環境が[base (3.13.5)]になっていて、筆者が自分で作成したcondaの仮想環境になっていません。これは後で、仮想環境の割り当ての例で修正してみます。
各プロジェクトの実行環境をクリックすると、さらにそこにインストールされているパッケージやモジュールも一覧できます(画像は省略)。
各プロジェクトにマウスをホバーさせると、右側には3つのボタンが表示されます。
これらのボタンはプロジェクトのパスをコピー、ターミナルの起動、プロジェクトの環境設定を行うものです。特にターミナルの起動はそのプロジェクトの実行環境が仮想環境であれば、それを有効化した上でターミナルを起動してくれます。
「お、これは便利かも?」と思ったんですが、condaがインストールされていると、有無をいわさずそのベースが有効化された上で、各仮想環境が有効化されるっぽいので、今のところはこれは使わないことをオススメします。「(venv) (base) ……% 」みたいなプロンプトって見たくないですよね。
このビューは主に現在のプロジェクトの実行環境がどうなっているかの確認に使うことになると思われます。実行環境を新規に作成するにしても、手作業が入るのであれば、ターミナルを起動して自分の手で設定するのがラクチンですよねぇ。
一方の[Environment Managers]ビューには先ほども述べたように、グローバルにインストールされているPython、現在ワークスペースに開いているプロジェクトにある仮想環境、condaで作成した仮想環境が表示されます。
このビューでも実行環境にマウスをホバーさせると3つ(グローバルにインストールされているPython)あるいは4つのボタン(その他の仮想環境)が表示されます。上の画像で[パッケージの管理]とあるのはそれらのボタンの右から2つ目のボタンの機能です。
これらのボタンをクリックすると、環境のパスのコピー、仮想環境を有効化してのターミナルの起動(グローバルにインストールされたPythonにはこのボタンがありません)、パッケージの管理、プロジェクトの実行環境として設定が行えます。
例えば、上の画像で[conda313]の右端に表示されるチェックマークをクリックすると、コマンドパレット部分に次のような選択肢が表示されます。
上の画像では[conda_proj]をチェックしています。これによって、「conda create -n conda313 python=3.13」のようなコマンドで作成したcondaの仮想環境がconda_projプロジェクトの実行環境として設定できるわけです。何らかの都合で、1つの実行環境を複数のプロジェクトの実行環境として設定するときには便利かもしれません。
とはいえ、今のところの使い勝手はあまり良くありません。多くの人がやっていると思うのですが、Pythonのコードの一部分を範囲選択して[Shift]+[Enter]キーでターミナルで実行しようとすると、Pythonのプロンプト(>>>)に入ってから仮想環境を有効化しようとしているようで例外が発生することがあります。うーん。
まだプレビュー段階であるとはいえ、「未完成なところが多いかな」と筆者は感じたのですが、その一方でこれはプロジェクトに新たな視点をもたらすものなのかもしれないとも感じています。Google Antigravityはコードにフォーカスするエディタに加えて、エージェントとのやりとりにフォーカスするエージェントマネジャーを導入しました。
Environments拡張機能は、規模こそ小さいながら、プロジェクトを実行環境という面から捉えるためのツールといえるかもしれません。開発者であれば、実行環境の作成や割り当て、それにまつわる細々とした作業はターミナルやエディタのタブを開いて手作業で行えば十分です。しかし、プロジェクトが複雑になるにつれ、もしかしたら実行環境の構成も複雑になるのかもしれません。そうしたときに、コードにフォーカスするエディタとは別に、Environments拡張機能のように環境にのみ特化したビューがあることで、その設定をビジュアルに把握でき、マウスをポチポチするだけでお手軽に管理できる。将来的にはそんな使い方があるのかもと感じるところもあります。
とはいえ、この拡張機能は未完成ですし、そもそもプレビュー段階です。今すぐ使ってみようとはならないかもしれません。興味のある方はPython拡張機能のアップデートを少しばかり気にしてみるのが吉かもしれませんね。
Environment拡張機能は独立した拡張機能のようにも見えますが、実際にはPython拡張機能から直接的に使われる予定とのことですし、サードパーティー向けにAPIも搭載されています。こうしたことからMicrosoftはかなりの力をこの拡張機能に入れているはずです。となれば、簡単に見捨てられることはないでしょうし、今後の成長に大きく期待できるのだと筆者は考えています。
Copyright© Digital Advantage Corp. All Rights Reserved.