Инструмент репо Android не работает с python2

В моем Dockerfile есть python3, и я получаю:

RUN repo init -u https://android.googlesource.com/platform/manifest
 ---> Running in f3adc38c2aac
/usr/bin/env: 'python': No such file or directory

Если я устанавливаю python, я получаю эту ошибку:

Step 6/7 : RUN repo init -u https://android.googlesource.com/platform/manifest
 ---> Running in 9c03e1b95c0f
repo: warning: Python 2 is no longer supported; Please upgrade to Python 3.6+.
Traceback (most recent call last):
  File "/home/project/aosp/.repo/repo/main.py", line 56, in <module>
    from subcmds.version import Version
  File "/home/project/aosp/.repo/repo/subcmds/__init__.py", line 38, in <module>
    ['%s' % name])
  File "/home/project/aosp/.repo/repo/subcmds/upload.py", line 27, in <module>
    from hooks import RepoHook
  File "/home/project/aosp/.repo/repo/hooks.py", line 472
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

Репо скачивается так:

RUN mkdir -p /android_tools \
&& curl https://storage.googleapis.com/git-repo-downloads/repo > /android_tools/repo \
&& chmod a+x /android_tools/repo
3
0
2 752
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

https://storage.googleapis.com/git-repo-downloads/repo требуется как минимум Python 3.6.

Чтобы использовать python3 с только что загруженным repo, вам нужно исправить строку shebang:

sed -i '1s/python/python3/' /android_tools/repo

почему гугл просто не изменил это на repo?

Guerlando OCs 24.12.2020 21:07

@GuerlandoOCs Потому что в настоящее время нет стандартного способа четко различить Python 2 и 3. См. python.org/dev/peps/pep-0394 esp. python.org/dev/peps/pep-0394/#for-python-runtime-distributor‌​s

phd 24.12.2020 21:24

Другие вопросы по теме