Brett Cannon: PEP 832 を書いた理由 -... ノート
RSS惑星Python

Brett Cannon: PEP 832 を書いた理由 -- 仮想環境の検出

VS Codeのようなツールは、プロジェクトのPython環境を特定するのに苦労しており、コード実行や依存関係分析といった不可欠な機能を妨げています。この課題は、エディタがプロジェクトがどのワークフローツールを採用しているか、または仮想環境がどこに配置されているかを検出するための普遍的な方法を持たないことに起因します。プロジェクトが最初に開かれたとき、VS CodeはユーザーがHatch、Poetry、uv、またはカスタムソリューションを好むかを確実に判断できません。現在の方法では、pyproject.tomlに基づいた推測に依存することが多く、これはサポートされているツールの正確なリストを維持することに依存します。さらに、環境をグローバルに保存したり、共有環境を許可したりするワークフローツールは、特にユーザーが多数の環境を管理している場合に、特定を複雑にします。プロジェクト内に.venvディレクトリとして環境が保存されている場合は、基本的な機能を提供する簡単な解決策があります。しかし、プロジェクト外の環境や複数の環境が存在する場合、提案されている.python-envsのような専用ファイルにそれらのパスをリストすることができます。ツールの好みに対応するため、pyproject.tomlの[workflow]テーブルが、ツールがサーバーモードで起動する方法を定義するために提案されており、Workflow Server Protocolに基づいたJSON-RPCによる通信を可能にします。このプロトコルにより、ツールはエディタに利用可能な環境を通知し、それらの作成を管理できます。代替案としては、必要な環境の詳細を返すCLIツールの命名規則を確立することが含まれます。著者の動機は、経験レベルに関係なく、すべてのPythonユーザーにとって手動の環境管理を最小限に抑えることでセットアップを簡素化したいという願望から来ています。この取り組みは、VS Codeに限定されず、他のエディタでも採用できるソリューションを目指しています。このような標準化された通信プロトコルは、ワークフローツールを単なるミドルウェアを超えて引き上げ、より広範なエディタサポートを可能にし、カスタム拡張機能の開発を削減します。