# uv的仓库 **Repository Path**: nishixxs/uvs-warehouse ## Basic Information - **Project Name**: uv的仓库 - **Description**: 一键安装uv的 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 16 - **Created**: 2026-09-17 - **Last Updated**: 2026-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # uv 一键配置工具 一个面向国内网络环境的 **uv 图形化配置工具**:选目录、选镜像、配缓存、同步 pip,点一次「一键应用」全部搞定。 仅依赖 Python 标准库(tkinter),可用 PyInstaller 打成单个 exe。 ## 功能 | 项目 | 说明 | | --- | --- | | ① 安装目录 | 自由选择 `uv.exe` 存放位置,支持官方脚本 / GitHub 发布包(可配加速前缀)/ pip 三种安装方式 | | ② 镜像源 | 内置清华、阿里、中科大、华为云、腾讯、网易等国内源,支持一键测速选最快,支持自建私有源 | | ③ 缓存目录 | `UV_CACHE_DIR`,包缓存与构建缓存位置 | | ④ 包存储位置 | `UV_PYTHON_INSTALL_DIR`(Python 版本)、`UV_TOOL_DIR`(uv tool 安装的工具) | | ⑤ pip 同步 | 写入 `%APPDATA%\pip\pip.ini`,可同时写入 `PIP_INDEX_URL` / `PIP_CACHE_DIR`,让 pip 与 uv 行为一致 | | 高级 | 链接模式(跨磁盘建议 `copy`)、HTTP 超时、并发下载数、Python 下载镜像、附加 uv.toml | 配置写入位置可三选:用户环境变量、`%APPDATA%\uv\uv.toml`、pip.ini。全部只作用于**当前用户,无需管理员权限**。 ## 运行 ```bash python main.py ``` ## 打包 exe ```bat build.bat ``` 或手动执行: ```bash pip install "pyinstaller>=6.0" pyinstaller build.spec --noconfirm --clean ``` 产物:`dist\uv一键配置工具.exe`(单文件、无控制台窗口)。 需要图标时,准备 `assets/icon.ico` 并取消 `build.spec` 中 `icon=` 的注释。 ## 目录结构 ``` main.py 入口 uvc/ gui.py tkinter 界面 tasks.py 一键应用 / 清理 / 状态 / 测速 installer.py uv 本体安装与查找 uvconfig.py uv.toml 生成与读写 pipconfig.py pip.ini 生成与读写 env.py 用户环境变量(注册表 + WM_SETTINGCHANGE 广播) mirrors.py 国内镜像源预设 paths.py 默认路径 build.spec / build.bat 打包配置与脚本 ``` ## 实现要点 - **环境变量**:直接写 `HKCU\Environment` 并广播 `WM_SETTINGCHANGE`,比 `setx` 更可靠(无 1024 字符截断、即时生效)。 - **uv.toml 兼容性**:uv 的配置文件**不支持** `python-install-dir` / `tool-dir` / `http-timeout`,这几项只能走环境变量;本工具只写 uv 明确支持的字段,写入时会备份并保留原有其它配置(如 `python-downloads-json-url`)。 - **PATH**:追加安装目录时去重,已存在则不重复写入。 - **后台线程**:安装、测速、状态检测均在子线程执行,界面不卡死,日志实时刷新。 ## 关于 GUI 框架 当前使用 **tkinter**(Python 自带、零依赖、PyInstaller 打包体积小、启动快),是本场景的性价比之选。 若后续需要更现代的视觉或更复杂交互,可考虑: - **PySide6 / PyQt**(Qt):控件最丰富、外观最专业,代价是打包体积增加约 40–60 MB; - **Flet / NiceGUI**:用 Python 写现代化 Web 风格界面,适合需要跨平台的场景; - **customtkinter / ttkbootstrap**:仍然基于 tkinter,改动量小即可获得现代主题,是「最小改动升级外观」的推荐方案。