3.4 KiB
3.4 KiB
工作区排查
uv 不识别(按序排查)
- 刚装完、当前会话不认识:会话内刷新 PATH——
- PowerShell:
$env:Path = [Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [Environment]::GetEnvironmentVariable("Path","User") - Git Bash / zsh:
export PATH="$PATH:$HOME/.local/bin" - cmd:重开终端。
- PowerShell:
- 试试模块入口:
python -m uv --version。可用则后续所有uv <子命令>都换成python -m uv <子命令>。 - 用 pip 兜底安装:
pip install uv后回到第 2 条,立即生效(winget/官方脚本方式要等新终端)。 - 彻底没有 Python/uv:先装 Python 3.10+(或让 uv 官方脚本一并装好托管 Python),再走第 3 条。
网络与镜像(国内环境)
uv sync / uv run 拉包慢或超时时,临时切换清华镜像:
$env:UV_DEFAULT_INDEX = "https://pypi.tuna.tsinghua.edu.cn/simple"
uv sync
要持久化则写入工作区 pyproject.toml:
[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
sync / add 相关
No solution found/ 依赖解析冲突:dependencies里的版本约束互相矛盾(含uv add追加的包与既有约束冲突)。放宽或修正pyproject.toml后重试。- 缺必需包:
pyproject.toml里没有 pandas/openpyxl/playwright/requests(常见于复用已有项目)。工作区根执行uv add pandas openpyxl playwright requests补齐(幂等)。 - lock 与 pyproject 不一致:
uv.lock过期,uv sync/uv add会自动更新;若报 lock 损坏,删除uv.lock后重新uv sync。 requires-python不满足:本机 Python 全部低于 3.10。让 uv 自动下载即可:uv sync -p 3.12(或省略,uv 自选)。
.venv 损坏 / 重建
症状:uv run 报奇怪的导入错误、DLL 加载失败,或 .venv 被移动过。工作区根执行:
Remove-Item -Recurse -Force .venv
uv sync
playwright 相关
ModuleNotFoundError: playwright(或其他必需包缺失):环境未同步或缺包。工作区根执行uv add pandas openpyxl playwright requests补齐,或直接用uv run python <脚本>。- 复用系统 Chrome/Edge 无需
playwright install:只有用工作区内置 Chromium 时才需要uv run playwright install chromium。 playwright install下载浏览器慢:$env:PLAYWRIGHT_DOWNLOAD_HOST = "https://npmmirror.com/mirrors/playwright"后重试。
无工作区目录临时跑脚本(PEP 723 兜底)
技能脚本头部带 PEP 723 内联依赖声明(# /// script ... ///),在无 pyproject.toml 的目录直接 uv run <脚本> 也可运行,uv 自动建缓存环境:
- 报「无法解析依赖/找不到脚本」时:确认路径存在且为正斜杠写法;确认脚本头部声明未被删改。
- 需要重建缓存环境:删除
%LOCALAPPDATA%\uv\cache\environments-v2下对应目录(或整体uv cache clean)后重试。 - 批量/长期使用仍建议按 SKILL.md 建正式工作区,避免缓存环境碎片化。
无 uv 的最终兜底
uv 完全装不上时,用标准库 venv 手动搭(仅应急,失去 lock 可复现性):
python -m venv .venv
.venv\Scripts\python.exe -m pip install pandas openpyxl playwright requests
# 此后所有命令用 .venv\Scripts\python.exe 替代 uv run python