ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何用 uv 运行 marimo notebook:uvx 与内联脚本元数据的集成方法

如何用 uv 运行 marimo notebook:uvx 与内联脚本元数据的集成方法 如何用 uv 运行 marimo notebookuvx 与内联脚本元数据的集成方法【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uvmarimo 是一个开源 Python notebook以纯 Python 脚本形式保存可以像传统软件一样用 Git 做版本管理、作为脚本运行、或作为 app 分享。正因为它就是普通.py文件uv 可以用两条直接的路径来运行它用uvx在一次性隔离环境里临时启动 marimo或者用 uv 的内联脚本元数据inline script metadata让 notebook 自带依赖声明随时以脚本方式执行。本文面向已经拿到一个 marimo notebook一个.py文件、希望不手动管理虚拟环境就能运行它的开发者。前提先装好 uv两条路径都依赖 uv。官方文档 Installing uv 提供了多种安装方式macOS 和 Linux 上最常用的是独立安装脚本$ curl -LsSf https://astral.sh/uv/install.sh | shWindows 上则使用 PowerShellPS powershell -ExecutionPolicy ByPass -c irm https://astral.sh/uv/install.ps1 | iex该脚本会下载并执行安装程序可能修改你的 shell 配置文件官方文档提示可以先用curl -LsSf https://astral.sh/uv/install.sh | less审查脚本内容再执行。也支持 PyPIpipx install uv或pip install uv、Homebrewbrew install uv、WinGet、Scoop、Cargo 等方式按需选择即可。路径一用 uvx 临时运行 marimo如果只是临时使用 marimo不需要把它装进任何持久环境。Using uv with marimo 给出的命令是$ uvx marimo edit这会启动一个 marimo servermarimo 本身被安装在一个临时的隔离环境里。uvx是uv tool run的等价别名见 Using toolsuvx marimo edit与uv tool run marimo edit完全等价区别只是uvx更短。如果已经有具体的 notebook直接带上文件路径启动$ uvx marimo edit my_notebook.py其中my_notebook.py是你的 marimo notebook 文件marimo notebook 就是普通 Python 脚本。uvx路径适用于临时、即开即用的场景。文档同时说明了一个边界条件如果你在项目里运行、且工具需要项目本身被安装应使用uv run而不是uvx——因为uvx的工具环境与项目是隔离的。对临时启动 marimo 来说这不是问题。路径二给 notebook 写入内联脚本元数据marimo notebook 既然以 Python 脚本形式存在就可以用 uv 支持的内联脚本元数据在文件内部声明自己的依赖做到自包含。这一步的完整机制见 Running scripts。用 uv add --script 声明依赖假设你的 notebook 需要numpy执行$ uv add --script my_notebook.py numpyuv add --script会在脚本顶部写入一个 TOML 格式的script元数据块声明依赖。按脚本指南中的格式写入后的文件形如# /// script # dependencies [ # numpy, # ] # /// import marimo __generated_with ... if __name__ __main__: marimo.run(main)以上结构参照文档中uv add --script生成的元数据块样式实际内容以你执行命令后文件为准。注意文档特别指出dependencies字段即使为空也必须注明。用 --sandbox 交互编辑带有内联脚本元数据的 notebook 要用下面的方式打开交互编辑$ uvx marimo edit --sandbox my_notebook.py执行后会发生三件事均来自 marimo 集成文档marimo 自动调用 uv在一个隔离的虚拟环境中启动 notebook依赖就是脚本元数据里声明的那些在 marimo 的 UI 里安装的任何包都会自动回写到 notebook 的脚本元数据中依赖声明随 UI 操作自动更新你不需要手工创建或管理这个虚拟环境。把 notebook 当脚本直接运行有了内联元数据notebook 可以不打开交互式会话、直接以 Python 脚本方式执行$ uv run my_notebook.py这条命令会执行 notebook 的全部单元格但不启动浏览器交互会话适合把 notebook 用进批处理流程。一个值得记住的行为细节只要脚本带内联脚本元数据即使在 uv project 目录里执行uv run项目的依赖也会被忽略不需要额外加--no-project见 Running scripts。验证方式文档给出的可核对结果是执行uvx marimo edit或uvx marimo edit my_notebook.py后marimo server 在浏览器中启动即视为隔离环境中的 marimo 启动成功使用--sandbox打开带元数据的 notebook 后在 marimo UI 中安装一个包重新查看my_notebook.py文件顶部dependencies列表里应出现该包——这是脚本元数据回写生效的直接证据uv run my_notebook.py以脚本方式跑完全部单元格、不打开浏览器交互会话。两条路径的选择与限制场景路径说明临时打开、不需要保留环境uvx marimo edit环境临时隔离关闭即弃notebook 需要随文件分发的固定依赖uv add --scriptuvx marimo edit --sandbox依赖写在文件里任何机器上执行都自动重建环境把 notebook 当脚本跑uv run my_notebook.py不开交互式会话两个限制来自文档原文uvx的工具环境与项目隔离。如果你在 uv project 中工作并希望 notebook 能 import 项目自己的模块应改用uv run marimo edit my_notebook.pymarimo 作为项目依赖时或uv run --with marimo marimo edit my_notebook.pymarimo 不是项目依赖时。后者有个明确警告这种跑法下通过 marimo UI 安装的包不会进入项目依赖下次启动可能丢失。非项目虚拟环境uv venvuv pip install marimo后再uv run marimo edit是文档提供的第三种跑法marimo UI 装包会用uv pip install写进该环境但它与本文两条主线不冲突属于另一种部署形态此处仅列出备查。相关文档Using uv with marimo、Running scripts、Using tools、Projects 概念。【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进