Skip to content

fix: install.sh 兼容 Windows venv 布局与 GBK 控制台 - #27

Open
shijinzhan wants to merge 1 commit into
stormzhang:mainfrom
shijinzhan:fix/install-windows-venv
Open

fix: install.sh 兼容 Windows venv 布局与 GBK 控制台#27
shijinzhan wants to merge 1 commit into
stormzhang:mainfrom
shijinzhan:fix/install-windows-venv

Conversation

@shijinzhan

Copy link
Copy Markdown

问题

Windows(Git Bash / MSYS2)下运行官方安装命令失败:

Installing token-tracker into a private venv (~/.local/share/token-tracker)...
bash: line 33: /c/Users/null/.local/share/token-tracker/venv/bin/pip: No such file or directory

两个原因:

  1. venv 布局差异:Windows 下 python -m venv 生成的可执行目录是 Scripts/ 而非 bin/,且可执行文件带 .exe 后缀(Scripts/pip.exeScripts/tt.exe)。脚本写死了 $VENV_DIR/bin/pip,uv / pipx 都不可用时会走到私有 venv 分支,直接失败。
  2. GBK 控制台崩溃:修好上面后,安装末尾的 tt setup 在 Windows GBK(cp936)控制台下输出 等字符时 rich 抛 UnicodeEncodeError: 'gbk' codec can't encode character '\u2713',配置向导中途崩溃。

改动(仅 install.sh,+11/-3)

  • venv 分支按实际布局探测:bin/ 不存在则退回 Scripts/;链接启动器时优先 tt.exe。Unix 行为完全不变。
  • 安装末尾的 tt setup 调用加 PYTHONUTF8=1,规避 GBK 编码崩溃(其他平台无影响)。

测试

Windows 11 + Git Bash + Python 3.13.14 实测:

  • 修复前:curl ... | bash 在 venv 分支报 bin/pip: No such file or directory 退出
  • 修复后:完整跑通 → venv 安装成功 → ~/.local/bin/tt 可执行 → 配置向导自动完成 → tt status 正常出报表

bash -n 语法检查通过;改动不涉及 Python 代码,CI 无影响。

Windows(Git Bash / MSYS2)下 python -m venv 生成的可执行目录是
Scripts/ 而非 bin/,且可执行文件带 .exe 后缀,导致私有 venv 安装
分支在 "$VENV_DIR/bin/pip" 处报 No such file or directory 失败。
按实际布局探测(bin 不存在则用 Scripts,tt.exe 存在则链接它),
Unix 行为不变。

另外 Windows GBK 控制台下,tt setup 的 rich 输出遇到 ✓ 等字符会
UnicodeEncodeError 崩溃,给 setup 调用加 PYTHONUTF8=1 规避。

已在 Windows 11 + Git Bash + Python 3.13 实测:修复前 install.sh
在 venv 分支失败,修复后完整跑通(安装 + 配置向导 + tt status)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants