Windows10下Gitosis安装报错:setup.py抛出RuntimeError
解决Windows 10下Python3.6安装gitosis的RuntimeError问题
你遇到的这个报错是因为gitosis的setup.py存在一处逻辑bug,再加上这个项目原本是针对Python2开发的,在Python3环境(尤其是Windows系统)下路径遍历的逻辑出现了冲突。
问题根源
查看gitosis目录里的setup.py,你会找到_subdir_contents函数——它在遍历完指定目录的所有文件后,无条件抛出了RuntimeError。在Python3的生成器机制下,当所有yield的内容被遍历完成后,代码会执行后面的raise RuntimeError(),这就导致不管目录里有没有内容,都会触发报错。
解决步骤
- 打开你克隆下来的
gitosis目录中的setup.py文件 - 定位到
_subdir_contents函数,原代码大概是这样:
def _subdir_contents(path): for (dirpath, dirnames, filenames) in os.walk(path): for filename in filenames: yield os.path.join(dirpath, filename) raise RuntimeError()
- 删除最后一行的
raise RuntimeError(),修改后的函数如下:
def _subdir_contents(path): for (dirpath, dirnames, filenames) in os.walk(path): for filename in filenames: yield os.path.join(dirpath, filename)
- 保存文件后,回到Git Bash窗口,重新执行安装命令:
python setup.py install
额外提示
因为gitosis是比较老旧的项目,后续可能还会遇到Python3兼容性问题(比如print语句语法、编码处理等)。如果之后还有报错,你可以尝试:
- 使用
2to3工具自动转换Python2代码到Python3:2to3 -w gitosis/ - 手动修复剩余的语法或逻辑冲突
希望这个方法能帮你解决当前的报错!
内容的提问来源于stack exchange,提问作者HyeongGyu Froilan Choi
相关产品推荐
相关产品推荐

