Venv-manager:面向人類和AI代理的Python虛擬環境運行時
Venv-manager是一個用Go編寫的Python虛擬環境管理工具,提供簡潔的CLI和Model Context Protocol(MCP)服務器,支持文件監控自動安裝缺失依賴、沙盒化臨時執行以及完整的虛擬環境生命週期管理,有效解決人類開發者與環境混亂以及AI代理包管理失誤的問題。
Venv-manager 是一個創新的 Python 虛擬環境管理工具,由 Go 語言編寫,編譯為單個靜態二進制文件,運行時僅需要系統中安裝有 Python 3(如果可用,也可利用 uv 加速)。它的設計初衷是解決兩個核心痛點:人類開發者面臨的虛擬環境混亂問題,以及 AI 代理(如大型語言模型)在生成和執行 Python 代碼時頻繁出現的環境管理錯誤。
對於人類用户,venv-manager 提供了一個清晰的命令行界面,支持創建、列出、刪除、克隆虛擬環境,以及安裝、升級、清理包等常用操作。它還包含一個用於發現配置的 config init 命令,以及一個基於 Bubble Tea 的終端界面(TUI),方便瀏覽環境。更重要的是,它引入了“文件監視”模式:通過 watch app.py --venv myenv 命令,工具會監視指定文件的變化,使用輕量級的 AST 解析器掃描其 import 語句,自動解析第三方庫別名(如 cv2 → opencv-python),並與當前虛擬環境中的已安裝包進行對比,然後自動安裝缺失的依賴。這使得虛擬環境始終與腳本的需求保持同步,非常適合在 LLM 迭代式開發場景中使用。
對於 AI 代理,venv-manager 提供了 Model Context Protocol(MCP)服務器,通過標準輸入輸出暴露 JSON-RPC 2.0 接口。代理可以調用包括 list_venvs、create_venv、describe_venv、install_packages、run_in_venv 和 exec_ephemeral 在內的多個工具。其中 exec_ephemeral 支持創建臨時虛擬環境、安裝依賴、執行命令,然後自動銷燬,整個過程在一個調用中完成。此外,該工具還支持沙盒執行(在 macOS 上使用 sandbox-exec,在 Linux 上使用 bubblewrap),默認拒絕網絡訪問,只允許對臨時目錄和虛擬環境路徑的寫入,適合運行不受信任的腳本。
另一個關鍵特性是 JSON 快照功能。describe 命令返回虛擬環境的完整快照,包括 Python 版本、包列表、磁盤用量、凍結哈希以及各 shell 的激活命令。凍結哈希使代理能夠在 O(1) 時間內檢測環境漂移。快照可以標記並用於回滾,確保環境狀態的可追溯性。
項目配置存儲在 ~/.config/venv-manager/config.json,支持設置基礎目錄、默認 Python 版本、是否使用 uv 等。如果系統中安裝了 uv 並啓用配置,創建虛擬環境的速度可提升 10 到 100 倍。
Venv-manager 的代碼結構清晰,包括 cobra CLI、核心操作管理器、MCP 服務器、TUI 等內部包。該項目在 GitHub 上開源(MIT 許可證),由 Jacopo Bonomi 開發,目前獲得 35 顆星,已有 7 個版本發佈。