语法错误:在AOSP代码中使用repo init无效的语法

29

我已尝试在Ubuntu构建机上使用repo init源代码,并成功克隆了该代码。

repo init -u git@github.com:xxx/xx_manifest.git -b xxx

现在我正在尝试在VM Ubuntu机器上进行repo init源代码。

在此过程中,出现以下错误:

Traceback (most recent call last):
 File "/xxx/.repo/repo/main.py", line 56, in <module>
from subcmds.version import Version
 File "/xxx/.repo/repo/subcmds/__init__.py", line 38, in <module>
['%s' % name])
 File "/xxx/.repo/repo/subcmds/upload.py", line 27, in <module>
from hooks import RepoHook
File "/xxx/.repo/repo/hooks.py", line 472
file=sys.stderr)
    ^
 SyntaxError: invalid syntax

Python版本在构建机器和虚拟机中相同,均为2.7.17。

9个回答

47

尝试使用这些命令

curl https://storage.googleapis.com/git-repo-downloads/repo-1 > ~/bin/repo
chmod a+x ~/bin/repo
python3 ~/bin/repo init -u git@....

3
欢迎来到StackOverflow!以下是一些提示,可以帮助您编写更好的答案:仅包含代码片段或命令的答案,如果没有解释它们的功能,为什么以及如何解决提问者的问题,则不太可能被接受或获得赞。最好的答案是彻底解释它们如何运作和为什么,逐步讲解,使用格式(加粗/斜体/下划线/标题)来提高可读性,以及良好的语法和拼写(例如每个句子的第一个单词大写)。如果您想改善答案,随时可以编辑它 :) - Someguy123
在此之前运行以下命令:
  1. mkdir -p ~/.bin 然后运行以下命令:
  2. PATH="${HOME}/.bin:${PATH}"
享受!
- Ali Waqas

19

我之前遇到了同样的问题,以下方法帮助我解决:

  • 下载最新版本的仓库: curl https://storage.googleapis.com/git-repo-downloads/repo-1 > repo
  • 更改权限使其可执行:chmod a+x repo
  • 使用 Python3 运行刚刚下载的“repo”文件进行 repo 初始化: python3 repo init -u git@github.com:xxx/xx_manifest.git -b xxx

这与被接受的答案相同,但有解释。修改被接受的答案会更好,但@skrrt没有改变任何东西,所以我会投票支持这个而不是被接受的答案。 - Daniel C Jacobs

11

尝试以下命令,以确保它能够100%正常工作,已经尝试并建议

mkdir -p ~/.bin
PATH="${HOME}/.bin:${PATH}"
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+rx ~/.bin/repo

在执行那些命令后,我得到了以下提示:/usr/bin/env: ‘python’: 没有那个文件或目录。 - Serg Burlaka
但是使用以下命令修复:sudo ln -s /usr/bin/python3 /usr/bin/python - Serg Burlaka
绝对是一个扎实的答案...完全符合文档 https://gerrit.googlesource.com/git-repo/#install - BushMinusZero
这解决了我的问题。有人告诉我使用 https://storage.googleapis.com/git-repo-downloads/repo-1,也许那是根本原因。 - Shiwakant Bharti

11

我在安装OpenSTLinux Yocto层时,在Ubuntu 18.04上遇到了相同的问题,使用以下命令:

repo init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-5.4-dunfell-mp1-20-11-12

返回:

Get https://gerrit.googlesource.com/git-repo/clone.bundle
Get https://gerrit.googlesource.com/git-repo
remote: Counting objects: 2, done
remote: Finding sources: 100% (117/117)
remote: Total 117 (delta 63), reused 117 (delta 63)
Receiving objects: 100% (117/117), 142.25 KiB | 11.85 MiB/s, done.
Resolving deltas: 100% (63/63), completed with 32 local objects.
From https://gerrit.googlesource.com/git-repo
   1469c28..0588f3d  main       -> origin/main
 * [new tag]         v2.11      -> v2.11
 * [new tag]         v2.11.1    -> v2.11.1
Traceback (most recent call last):
  File "/home/xxx/Distribution-Package/openstlinux-5.4-dunfell-mp1-20-11-12/.repo/repo/main.py", line 56, in <module>
    from subcmds.version import Version
  File "/home/xxx/Distribution-Package/openstlinux-5.4-dunfell-mp1-20-11-12/.repo/repo/subcmds/__init__.py", line 38, in <module>
    ['%s' % name])
  File "/home/xxx/Distribution-Package/openstlinux-5.4-dunfell-mp1-20-11-12/.repo/repo/subcmds/upload.py", line 27, in <module>
    from hooks import RepoHook
  File "/home/xxx/Distribution-Package/openstlinux-5.4-dunfell-mp1-20-11-12/.repo/repo/hooks.py", line 472
    file=sys.stderr)

如果使用Python3而不是Python(2.7),这个问题会消失。您可以这样做:

sudo rm /usr/bin/python
sudo ln -s /usr/bin/python3 /usr/bin/python

8

一种解决方法是修改 /usr/bin/repo 的第一行,将其改为:

#!/usr/bin/python

to

#!/usr/bin/python3

这个命令要求系统使用Python3而不是默认的Python。


2
我很惊讶我是第一个点赞的人。它运行完美,并且需要最少的工作。 - Kent Tong
嗯,这里不起作用。显然,问题是我拥有的repo启动器版本是2.32,但项目中的repo脚本版本是1.13.11。所以解决方案就是更新项目中的repo。但是如何做到呢? - informatimago

3

如果你所在的系统没有安装Python3,比如在我的情况下,并且你也没有安装Python3的选项,或者安装它会破坏其他部分,那么可以选择将回退版本库降级到使用Python2.7的版本:

- git clone https://gerrit.googlesource.com/git-repo
- cd git-repo
- git reset --hard v1.13.11
- mkdir -p ~/.bin
- PATH="${HOME}/.bin:${PATH}"
- cp repo ~/.bin/repo
- chmod a+rx ~/.bin/repo

这将使用版本为 v1.13.11 的仓库,适用于 python2.7。


0

arvestad/alv问题1中类似的错误所示,这表明使用Python 2.7而不是Python3运行该过程是一致的。

请在以下位置仔细检查您的Python版本:

  • Ubuntu构建机(其中repo init有效)
  • 虚拟机Ubuntu机器(其中repo init失败)

同样的error here, 错误提示表明您正在执行适用于python3PYTHONPATHpython2


感谢您的回复。是的,Python在这两台机器上都是相同的。 - GNK
必须有所区别,因为错误意味着您正在使用Python2而不是3。检查您的环境变量(例如PYTHONPATH)。 - VonC
在输入命令“echo $PYTHONPATH”时没有任何输出。 - GNK

0

我不确定这是如何工作的,但我遇到了相同的问题,似乎这个解决方法对我有用。

https://source.android.com/setup/develop#installing-repo 不要使用旧版,使用第一个来解决它。

编辑:似乎您还需要在系统上安装Python 3.6才能使其正常工作。您仍然可以让update-alternatives指向Python 2.7,只需安装3.6或更新版本即可。


0

只需安装Python3和最新的repo。

我也遇到了这个问题,但是在Mac OS上。日志与您的完全相同。 肯定是Python2引起了这个问题。repo试图在Python2环境中运行Python3文件。

我从repo文档https://gerrit.googlesource.com/git-repo/+/refs/heads/master/docs/python-support.md中找到了这个问题。

所以我更新了我的repo(位于depot_tools中)。由于我已经安装了Python3,现在一切都很好。

希望我的经验能帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接