---
date: 2026-05-07
type: error
tags: [gitea, bash, python, pr-creation]
---

# Gitea PR 创建：python heredoc 必须 `export` token，不能只用 shell 赋值

## 现象

```bash
GITEA_TOKEN="${GITEA_API_TOKEN:-...}"
python3 - <<'PY'
import os
token = os.environ['GITEA_TOKEN']  # KeyError: 'GITEA_TOKEN'
PY
```

报 `KeyError: 'GITEA_TOKEN'`。

## 根因

`VAR=value` 只是 shell **本地变量**，不会进子进程环境。`python3` 是子进程，看不到。

## 解法

加 `export`：

```bash
export GITEA_TOKEN="${GITEA_API_TOKEN:-$(git credential fill ...)}"
```

或者一次性内联：`GITEA_TOKEN=xxx python3 - <<PY ...`（同一行赋值才生效）。

## 适用范围

CLAUDE.md 里 Gitea API 鉴权那段示例只写 `GITEA_TOKEN="${...}"`，没提 export。后续凡是用 `python3 -` heredoc 调 Gitea API（创建 PR / 改保护分支 / 合并）都会踩。`curl` 命令行直接 `-H "Authorization: token $GITEA_TOKEN"` 没事，因为还是同一个 shell 进程做参数展开。
