gpt4 book ai didi

python - 在 Python 3.3 上尝试 "repo init"时出现 TypeError

转载 作者:太空狗 更新时间:2023-10-30 01:55:04 26 4
gpt4 key购买 nike

我有 Arch Linux python 3.3.0我已经下载了最新的 repo,如果我尝试从 Google 示例执行 repo init,我会收到此错误:

 [username@otp-username-l2 teste]$ repo init -u https://android.googlesource.com/platform/manifest
Traceback (most recent call last):
File "/home/username/bin/repo", line 738, in <module>
main(sys.argv[1:])
File "/home/username/bin/repo", line 705, in main
_Init(args)
File "/home/username/bin/repo", line 234, in _Init
_CheckGitVersion()
File "/home/username/bin/repo", line 274, in _CheckGitVersion
if not ver_str.startswith('git version '):
TypeError: startswith first arg must be bytes or a tuple of bytes, not str

我被迫做一个新的 repo init 的原因是我必须从一个已经初始化的 repo 做一个提交,但是我已经从任何地方改变了 git 用户,我仍然得到这个:

Writing objects: 100% (12/12), 966 bytes, done.
Total 12 (delta 11), reused 0 (delta 0)
o ssh://new.username@128.224.0.74:29418/stelvio/mm
![remote rejected] branchname -> refs/for/main_dev (you are not committer oldusername@email.com)
error: failed to push some refs to 'ssh://new.username@128.224.0.74:29418/project/one'

最佳答案

Repo 还没有完全支持 Python 3。一些工作已经完成,例如 using the print functionimporting the correct urllib ,但这项工作似乎尚未完成。

目前,您需要将它与 Python 2 一起使用。您可以通过将 python 替换为 来编辑 repo 可执行文件顶部的 shebang python2 或者你可以运行:

python2 `which repo`

假设您在路径中安装了 Python 2 的 python2 版本。

您可以轻松重现问题:

Python 3.2.3 (default, Nov  7 2012, 19:36:04) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> b'asd'.startswith('asd')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: startswith first arg must be bytes or a tuple of bytes, not str

这里是_CheckGitVersion()的相关代码:

def _CheckGitVersion():
cmd = [GIT, '--version']
try:
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)

...

ver_str = proc.stdout.read().strip()
proc.stdout.close()
proc.wait()

if not ver_str.startswith('git version '):

读取Popen 调用的stdout 返回bytes,因此传递给startswith 也必须是 bytes(数据的原始字节)而不是 str(Unicode 代码点序列)。

关于python - 在 Python 3.3 上尝试 "repo init"时出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15913868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com