1
私はPython 3でBazelでpy_testを実行したいと思います。 BazelはPython 3を使用します
py_library(
name = "foo",
srcs = ["foo.py"]
)
py_test(
name = "foo_test",
srcs = glob(["foo_test.py",]),
deps = [":foo"]
)
py_runtime(
name = "python-3.6.3",
files = [],
interpreter_path = "/usr/local/bin/python3",
)
は私がnew_http_archiveとサンドボックスbazelするのpython3をインポートし、bazel内http_archiveことを指すpy_runtimeルールのinterpreter_pathを提供したいと考え、
bazel test --python_top=//path/to/foo:python-3.6.3 foo_test
しかし、この使用して、コマンドを達成することができましたサンドボックスこれまでのところ、私はinterpreter_pathを見つけることができません... py_runtimeのどこか他の場所からhttp_archiveラベルを参照しなければなりませんか?
new_http_archive(
name = "python_version",
urls = ["https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz"],
strip_prefix = "Python-3.6.3",
build_file_content = """
py_library(
name = "python_srcs",
srcs = glob(["Lib/*.py"]),
visibility = ["//visibility:public"]
)"""
)
ありがとうございました、このアプローチはクロスプラットフォームではありません私は "/ usr/local/bin/python3"を持つことに固執しますが、Bazelにpy_homeの環境変数を使用させる方法があるのだろうかと疑問に思っていますか? – Zeitgeist
あなたはどんなプラットフォームを気にかけていますか?これはLinux上のほとんどのタイプで有効です。 MacまたはWindowsの場合、インストーラーをフェッチする代わりのnew_http_archivesを作成することができます。そして、あなたのpy_runtimeルールは、インタプリタ上でプラットフォームに基づいてどちらを使うかを選択するselect文を持つことができます。 – Adam
私はすべてのプラットフォームを気にしています。 'srcs_version =" PY3 "'のときに '--python_path =/usr/local/bin/python3 --force_python = py3'でpython 3を強制する別の方法を見つけましたので、 -python_path'を使用して環境変数を受け入れることもできます)。ありがとう! – Zeitgeist