Python3 с Bazel 0.5.4 - жестко закодирован в исполняемый файл python?

Я поддерживаю проект, использующий Bazel 0.5.4, и его нужно запускать в среде, где его нет. Я хотел бы указать приложению на использование python3.

Эта проблема аналогична Bazel 0.26.1, использующему Python3 на py_test, но версия rules_python, упомянутая в этом билете, настолько нова, что несовместима с bazel 0.5.4.

ЦЕЛЬ: Выполнять команды python с помощью /usr/bin/python3, а не python.

Как есть, приложение дает сбой, когда не может найтиbazel buildзавершается без проблем, ноbazel testпродолжает искать и терпит неудачу.

      bazel test ... --test_output=all --python_top=//sandbox_app:python-3.8.10
...
/usr/bin/env: 'python': No such file or directory
================================================================================
INFO: Elapsed time: 0.658s, Critical Path: 0.10s
INFO: Build completed, 1 test FAILED, 2 total actions
//sandbox_app:sandbox_test                                               FAILED in 0.1s

это не сработало

Следующая конфигурация работала для аналогичного пользователя, описанного здесь:https://groups.google.com/g/bazel-discuss/c/nVQ48R94S_8 Но даже послеbazel clean, bazel по-прежнему продолжает вызыватьpythonпри запуске тестов.

РАБОЧАЯ СРЕДА

      git_repository(
    name = "io_bazel_rules_go",
    remote = "https://github.com/bazelbuild/rules_go.git",
    tag = "0.5.4",
)

СТРОЙ.базел

      package(default_visibility = ["//visibility:public"])

py_test(
    name = "sandbox_test",
    srcs = ["sandbox_test.py"],

    default_python_version = "PY3",
    srcs_version = "PY3",
)

py_runtime(
    name = "python-3.8.10",
    files = [],
    interpreter_path = "/usr/bin/python3",
)

Детали версии:

      $ bazel info release
release 0.5.4

Это сведет к минимуму сбои в работе приложения, если это можно будет сделать без обновления bazel.

песочница_test.py

      #!/usr/bin/python3

import unittest

class SandboxTest(unittest.TestCase):

  def testRunSandbox(self):
    # Valid for Python 3, syntax error for python2
    print(print("Hello, Python!"))


if __name__ == '__main__':
  unittest.main()

Возможно связанные проблемы

https://github.com/bazelbuild/bazel/issues/4815https://github.com/bazelbuild/bazel/issues/200

Спецификация правил:

https://bazel.build/reference/be/python

Похожие проблемы:

0 ответов

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