在 Coiled 中使用 uv
Coiled 是一个专注于用户体验的无服务器云计算平台,能够轻松在云端硬件(AWS、GCP 和 Azure)上运行代码。
本指南展示了如何结合使用 uv(用于依赖管理)和 Coiled(用于云端部署)来运行 Python 脚本。
使用 uv 管理脚本依赖
注意
虽然我们在本指南中将使用一个具体的示例,但任何 Python 脚本都可以与 uv 和 Coiled 配合使用。
我们将使用以下脚本作为示例
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "pandas",
# "pyarrow",
# "s3fs",
# ]
# ///
import pandas as pd
df = pd.read_parquet(
"s3://coiled-data/uber/part.0.parquet",
storage_options={"anon": True},
)
print(df.head())
该脚本使用 pandas 加载托管在 S3 公共存储桶中的 Parquet 文件,然后打印前几行。它利用内联脚本元数据来列举其依赖项。
在本地运行此脚本时,例如使用
uv 将自动创建一个虚拟环境并安装其依赖项。
要了解更多关于在 uv 中使用内联脚本元数据的信息,请参阅脚本指南。
使用 Coiled 在云端运行脚本
使用内联脚本元数据使脚本完全独立:它包含了运行所需的所有信息。这使得它更容易在其他机器(例如云端机器)上运行。
在许多用例中,本地工作站无法满足资源需求,例如:
- 处理海量云端数据
- 需要加速硬件(如 GPU)或大内存机器
- 并行运行同一个脚本并处理成百上千个不同的输入
Coiled 可以简化在云端硬件上运行代码的过程。
首先,使用 coiled login 进行身份验证。
如果您还没有 Coiled 账户,系统会提示您创建一个——开始使用 Coiled 是免费的。
要指示 Coiled 在 AWS 的虚拟机上运行该脚本,请在顶部添加两行注释:
# COILED container ghcr.io/astral-sh/uv:debian-slim
# COILED region us-east-2
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "pandas",
# "pyarrow",
# "s3fs",
# ]
# ///
import pandas as pd
df = pd.read_parquet(
"s3://coiled-data/uber/part.0.parquet",
storage_options={"anon": True},
)
print(df.head())
提示
虽然 Coiled 支持 AWS、GCP 和 Azure,但此示例假设使用的是 AWS(请参阅上面的 region 选项)。如果您是 Coiled 的新用户,您将自动获得一个运行在 AWS 上的免费账户。如果您不在 AWS 上运行,可以使用您云服务提供商对应的有效 region,或删除上面的 region 行。
这些注释告诉 Coiled 在运行脚本时使用官方的 uv Docker 镜像(确保 uv 可用),并在 AWS 的 us-east-2 区域运行(示例数据文件正存放于此),以避免产生额外的数据流出费用。
要提交批处理作业供 Coiled 运行,请使用 coiled batch run 在云端执行 uv run 命令:
之前在本地运行的相同流程,现在正在 AWS 的远程云虚拟机上运行。
您可以在 cloud.coiled.io 的 UI 中监控批处理作业的进度,或在终端中使用 coiled batch status、coiled batch wait 和 coiled batch logs 命令进行查看。

请注意,我们还可以指定其他配置,例如实例类型(默认为 4 核、16 GiB 内存的虚拟机)、磁盘大小、是否使用竞价实例等。有关更多详细信息,请参阅 Coiled Batch 文档。
有关 Coiled 的更多详细信息及其如何帮助解决其他用例,请参阅 Coiled 文档。