【问题标题】:SyntaxError: invalid syntax to repo init in the AOSP codeSyntaxError:在 AOSP 代码中 repo init 的语法无效
【发布时间】:2021-03-19 11:36:38
【问题描述】:

我已经尝试 repo init 源代码 Ubuntu 构建机器并且它能够成功地克隆代码。

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

现在我正在尝试 repo init VM Ubuntu 机器中的源代码。

在出现如下错误之间:

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

build machine 和 vm machine 2.7.17 的python 版本相同。

【问题讨论】:

    标签: python github virtual-machine android-source repo


    【解决方案1】:

    正如arvestad/alv issue 1 中的类似错误所示,这与使用 Python 2.7 而不是 Python3 运行进程是一致的

    仔细检查您的 Python 版本:

    • 您的 Ubuntu 构建机器(repo init 工作的地方)
    • 您的 VM Ubuntu 机器(repo init 失败的地方)

    相同的error here,错误提示您正在使用仅适用于python3PYTHONPATH 执行python2

    【讨论】:

    • 感谢您的回复。是的,Python 在两台机器上都是一样的。
    • 但肯定有区别,因为错误意味着您使用的是 python2 而不是 3。检查您的环境变量(例如 PYTHONPATH)
    • 输入命令“echo $PYTHONPATH”时没有任何反应
    【解决方案2】:

    我不知道这是如何工作的,但我只是遇到了同样的问题,这似乎为我解决了。

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

    编辑:看来您还需要在系统上安装 python 3.6 才能进行这项工作。你仍然可以让 update-alternatives 指向 python 2.7,你只需要安装 3.6 或更新版本。

    【讨论】:

      【解决方案3】:

      试试这些命令

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

      【讨论】:

      • 欢迎来到 StackOverflow!以下是一些帮助您编写更好答案的提示: 仅包含代码 sn-ps 或命令而没有解释他们做什么/为什么/如何解决 OP 问题的答案不太可能被接受或获得赞成票。最好的答案是通过格式(粗体/斜体/下划线/标题)逐步彻底解释它们的工作方式和原因,以提高可读性,以及良好的语法和拼写(例如将每个单词中的第一个单词大写)句子)。如果您想改进它,您也可以随时编辑您的答案:)
      • 在这些之前运行以下命令: 1. mkdir -p ~/.bin 在此运行之后 2. PATH="${HOME}/.bin:${PATH}" enjoy
      【解决方案4】:

      只需安装 python3 和最新的 repo。

      我也遇到了这个问题,但在 Mac OS 上。日志和你的完全一样。 绝对是python2导致了这个问题。 repo 是尝试在 python2 环境下运行 python3 文件。

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

      所以我更新了我的仓库(位于 depot_tools 中)。由于我已经安装了python3,所以现在一切正常。

      希望我的经验可以帮到你。

      【讨论】:

        【解决方案5】:

        我刚刚遇到了同样的问题,这为我解决了:

        • 下载最新版本的 repo: curl https://storage.googleapis.com/git-repo-downloads/repo-1 &gt; repo
        • 更改权限使其可执行:chmod a+x repo
        • 使用 python3 和您刚刚下载的“repo”运行您的 repo init:python3 repo init -u git@github.com:xxx/xx_manifest.git -b xxx

        【讨论】:

          【解决方案6】:

          在使用以下命令安装 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
          

          【讨论】:

            【解决方案7】:

            一个解决办法是修改/usr/bin/repo的第一行,改成

            #!/usr/bin/python
            

            #!/usr/bin/python3
            

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

            【讨论】:

            • 我很惊讶我是第一个对此投票的人。它完美地工作并且需要最少的工作。
            【解决方案8】:

            尝试以下命令,使其 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': No such file or directory
            • 但用这一行修复:sudo ln -s /usr/bin/python3 /usr/bin/python
            • 所以它就像火一样运行谢谢兄弟
            【解决方案9】:

            如果您正在运行的系统没有 python3,就像我的情况一样,并且您没有安装 python3 的选项,或者安装它会破坏其他部分,则选项是将 repo 降级到一个版本使用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 的 repo,它适用于 python2.7

            【讨论】:

              猜你喜欢
              • 2021-05-01
              • 1970-01-01
              • 2021-01-26
              • 2019-01-25
              • 2015-09-08
              • 1970-01-01
              • 2022-08-17
              • 1970-01-01
              • 2013-12-19
              相关资源
              最近更新 更多