---
title: Python SDK
description: 安装并使用官方 Sudomimus Python 包。
editUrl: true
head: []
template: doc
sidebar:
  order: 3
  hidden: false
  attrs: {}
pagefind: true
draft: false
---

import { CardGrid, LinkCard } from "@astrojs/starlight/components";
import SdkCapabilityTable from "../../../../components/SdkCapabilityTable.astro";

Python SDK 是一个 `uv` workspace，每个公开 API surface 对应一个包，需要 Python 3.11 或更高版本。

## 包

<SdkCapabilityTable language="python" locale="zh-cn" />

在上表将包标记为**已发布**之前，请从本地检出的 SDK 仓库使用它，不要假设 PyPI 已经提供该包。

## Connect 与 Session

```python
from sudomimus_connect import ConnectClient, ConnectClientAuthWithKey
from sudomimus_session import SessionClient

connect = ConnectClient(client_auth=ConnectClientAuthWithKey(
    application_anchor="your-app-anchor",
    private_key_pem=private_key_pem,
))
session = SessionClient()
```

Connect 用于启动并兑换浏览器 inquiry。流程签发 token 后，Session 负责 refresh、introspection、logout 和 revoke-all。client-auth 私钥和 refresh token 必须留在服务端。

Django 应用优先使用 [Django 框架 SDK](/zh-cn/frameworks/django/)，由它处理 callback 与 token 轮换。

## Device 与 Native

无法安全保存 client secret 的公开客户端使用 `sudomimus-device`。Steam ticket、AccessKey 或公钥签名 assertion 使用 `sudomimus-native`。两者签发的都是普通 Sudomimus token，后续由 `sudomimus-session` 管理。

## 源码

<CardGrid>
<LinkCard title="Python 包" description="源码、测试和各包 README。" href="https://github.com/sudomimus/sudomimus/tree/master/sdks/python/packages" />
<LinkCard title="Python 示例" description="可运行的 Connect 与 Session 示例。" href="https://github.com/sudomimus/sudomimus/tree/master/examples/python" />
</CardGrid>