Измените «python», чтобы указать на python2.7 внутри virtualenv

#python #python-3.x #python-2.7 #virtualenv #bazel

Вопрос:

Я пытаюсь создать цель bazel внутри virtualenv, и я сталкиваюсь со следующей ошибкой:

 Use --sandbox_debug to see verbose messages from the sandbox
Error occurred while attempting to use the default Python toolchain (@rules_python//python:autodetecting_toolchain).
According to '/home/vagrant/venv/bin/python -V', version is 'Python 3.7.5', but we need version 2. PATH is:

/home/vagrant/venv/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/vagrant/bin

Please ensure an interpreter with version 2 is available on this platform as 'python2' or 'python', or else register an appropriate Python toolchain as per the documentation for py_runtime_pair (https://github.com/bazelbuild/rules_python/blob/master/docs/python.md#py_runtime_pair).

Note that prior to Bazel 0.27, there was no check to ensure that the interpreter's version matched the version declared by the target (#4815). If your build worked prior to Bazel 0.27, and you're sure your targets do not require Python 2, you can opt out of this version check by using the non-strict autodetecting toolchain instead of the standard autodetecting toolchain. This can be done by passing the flag `--extra_toolchains=@rules_python//python:autodetecting_toolchain_nonstrict` on the command line or adding it to your bazelrc.
 

Я попробовал --extra_toolchains=@rules_python//python:autodetecting_toolchain_nonstrict флаг, но сборка все равно не удалась, поэтому я подумал, что попробую построить с участием python2.

Текущее состояние моей системы:

  • Внутри virtualenv:
    • python и python3 , похоже, решил перейти на версию 3.7.5
    • python2 ни к чему не приводит
    • python2.7 разрешается в python 2.7.17
  • За пределами virtualenv:
    • python принимает решение 2.7.17
    • python3 принимается решение до 3.7.5
    • python2 ни к чему не приводит
    • python2.7 разрешается в python 2.7.17

Я хочу, чтобы либо python или python2 в моем virtualenv также разрешилось до 2.7.17. (Я думаю, может python2 быть, так безопаснее? Я беспокоюсь, что изменение python может иметь много других побочных эффектов). Для изменения python я несколько раз пробовал команду «обновление sudo-альтернативы», но, похоже, она уже указывает на то, что нужно. Похоже, virtualenv просто не улавливает этого. Любая помощь была бы очень признательна.

Спасибо!

Комментарии:

1. Как вы создали виртуальную среду?

2. Вы определяете, какую версию Python вы хотите, когда создаете свой virtualenv. Как именно это сделать с Python 2.7, зависит от того, установлен ли у вас virtualenv пакет для Python 2.