1
0
Files
Skill/skills/lyxy-runner-python/references/best-practices.md
2026-02-25 17:36:42 +08:00

87 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 最佳实践和注意事项
## 为什么使用uv
| 特性 | 优势 |
|------|------|
| 环境隔离 | 不污染系统Python |
| 自动依赖 | `--with`语法无需pip install |
| 快速启动 | 比venv快10-100倍 |
| 项目集成 | 自动检测uv项目 |
| 零配置 | 开箱即用无需PEP 723 |
## 最佳实践
1. **依赖解析**: 排除标准库失败时检查遗漏依赖复杂项目用uv项目模式
2. **路径**: 用户指定优先;临时文件用于自主生成;跨平台由辅助脚本保证
3. **错误**: 预期错误脚本内处理;意外错误立即停止;检测失败自动回退
4. **清理**: 临时文件使用系统目录,自动清理,失败时手动删除
## 限制
- ✗ 不支持命令行参数、stdin输入、持久化环境
- ✗ 使用uv默认Python版本项目可在pyproject.toml指定
- ✗ 依赖解析可能不完整(动态导入、条件导入可能遗漏)
- ✗ 项目检测可能误判(网络问题导致回退)
## uv工具要求
- **uv是此skill的必需依赖不可替代**
- **不支持**: python, pip, poetry, venv, virtualenv
- 如果检测到uv未安装必须停止任务并引导用户安装
- 不要尝试使用替代方案或自动安装uv
## 自动依赖解析详细说明
分析import语句提取外部包名排除标准库。
### 标准库(排除)
**核心**: os, sys, pathlib, shutil, json, csv, re, datetime, math
**网络**: http.client, urllib, socket, io, logging
**高级**: itertools, functools, typing, dataclasses, enum
### 解析规则
1. 提取:`import pandas``pandas`, `from numpy import array``numpy`
2. 排除标准库
3. 去重
### 示例
```python
import pandas as pd
import numpy as np
import json # 标准库,排除
from pathlib import Path # 标准库,排除
# 结果: [pandas, numpy]
```
## 智能项目检测
### 检测命令
```bash
uv sync --dry-run
```
### 判断逻辑
- Exit code 0 → uv项目
- 非零退出码 → 非uv项目
- 失败 → 回退到非uv项目模式使用`--with`),不阻塞执行
## 路径处理
### 三层逻辑
1. **用户指定存储路径** → 写入指定路径
2. **用户指定现有脚本** → 直接执行
3. **未指定** → 临时文件
```bash
# 临时文件获取
temp_file_path=$(uv run ./scripts/get_temp_path.py)
```