Windows下Beeware Briefcase执行briefcase new时Git SHA解析失败
解决Beeware Briefcase
briefcase new 执行时的SHA解析错误 问题背景
- 环境:Windows + Powershell,通过pyenv管理Python 3.8.9,已创建虚拟环境并安装briefcase,Git已关联GitHub仓库
- 执行
briefcase new完成交互配置后,抛出SHA解析失败的ValueError,错误回溯如下:
Traceback (most recent call last): File "C:\~\.pyenv\pyenv-win\versions\3.8.9\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\~\.pyenv\pyenv-win\versions\3.8.9\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\~\CodeProjects\beeware-tutorial\.venv\Scripts\briefcase.exe\__main__.py", line 7, in <module> File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\briefcase\__main__.py", line 14, in main command(**options) File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\briefcase\commands\new.py", line 537, in __call__ return self.new_app(template=template, **options) File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\briefcase\commands\new.py", line 488, in new_app cached_template = self.update_cookiecutter_cache( File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\briefcase\commands\base.py", line 569, in update_cookiecutter_cache f"Using existing template (sha {head.commit.hexsha}, " File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\git\refs\symbolic.py", line 217, in _get_commit obj = self._get_object() File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\git\refs\symbolic.py", line 210, in _get_object return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path))) File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\git\objects\base.py", line 85, in new_from_sha oinfo = repo.odb.info(sha1) File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\git\db.py", line 43, in info hexsha, typename, size = self._git.get_object_header(bin_to_hex(binsha)) File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\git\cmd.py", line 1253, in get_object_header return self.__get_object_header(cmd, ref) File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\git\cmd.py", line 1240, in __get_object_header return self._parse_object_header(cmd.stdout.readline()) File "c:\~\codeprojects\beeware-tutorial\.venv\lib\site-packages\git\cmd.py", line 1198, in _parse_object_header raise ValueError("SHA could not be resolved, git returned: %r" % (header_line.strip())) ValueError: SHA could not be resolved, git returned: b''
解决方案
1. 清理Briefcase模板缓存
Briefcase会缓存cookiecutter模板,缓存损坏可能导致SHA解析失败:
- 找到Windows下缓存路径:
C:\Users\<你的用户名>\AppData\Local\briefcase\Templates - 删除该目录下所有内容,重新执行
briefcase new
2. 检查Git配置与仓库状态
- 执行
git config --list确认全局和项目级Git配置(用户信息、远程仓库)正确 - 执行
git status检查本地仓库是否处于干净状态,无未提交或冲突内容 - 执行
git pull拉取远程仓库最新内容
3. 重装依赖包
卸载并重新安装briefcase及相关Git依赖:
pip uninstall -y briefcase gitpython pip install briefcase
4. 切换Python版本测试
尝试切换到3.9.x版本(Beeware支持的版本),排查版本兼容性问题:
pyenv install 3.9.13 pyenv local 3.9.13 # 重新创建虚拟环境并安装briefcase
内容的提问来源于stack exchange,提问作者bart.s
相关产品推荐
相关产品推荐

