diff --git a/setup.py b/setup.py index a6645298..e40c7a08 100644 --- a/setup.py +++ b/setup.py @@ -90,10 +90,27 @@ def run(self): bazel_version = f.read().strip() os.environ["USE_BAZEL_VERSION"] = bazel_version + pythonpath = os.environ.get("PYTHONPATH", "") + # Include sys.path entries to support PEP 517 isolated build environments + sys_path_entries = os.pathsep.join([p for p in sys.path if p]) + if pythonpath: + pythonpath = os.pathsep.join([pythonpath, sys_path_entries]) + else: + pythonpath = sys_path_entries + + bazel_args = [ + self._bazel_cmd, + "run", + "-c", + "opt", + f"--repo_env=PYTHON_BIN_PATH={sys.executable}", + f"--repo_env=PYTHONPATH={pythonpath}", + ] + bazel_args.extend(self._additional_build_options) + bazel_args.append("//tensorflow_data_validation:move_generated_files") + subprocess.check_call( - [self._bazel_cmd, "run", "-c", "opt"] - + self._additional_build_options - + ["//tensorflow_data_validation:move_generated_files"], + bazel_args, # Bazel should be invoked in a directory containing bazel WORKSPACE # file, which is the root directory. cwd=os.path.dirname(os.path.realpath(__file__)), @@ -126,7 +143,7 @@ def _make_mutual_information_requirements(): def _make_visualization_requirements(): return [ - "ipython>=7,<8", + "ipython>=7,<9", ] @@ -219,13 +236,13 @@ def select_constraint(default, nightly=None, git_master=None): "tensorflow>=2.21,<2.22", "tensorflow-metadata" + select_constraint( - default=">=1.17.1,<1.18", + default="@git+https://github.com/tensorflow/metadata@master", nightly=">=1.18.0.dev", git_master="@git+https://github.com/tensorflow/metadata@master", ), "tfx-bsl" + select_constraint( - default=">=1.17.1,<1.18", + default="@git+https://github.com/tensorflow/tfx-bsl@master", nightly=">=1.18.0.dev", git_master="@git+https://github.com/tensorflow/tfx-bsl@master", ), diff --git a/third_party/python_configure.bzl b/third_party/python_configure.bzl index b4980f73..c7ec08e0 100644 --- a/third_party/python_configure.bzl +++ b/third_party/python_configure.bzl @@ -205,7 +205,11 @@ def _raw_exec(repository_ctx, cmdline): Returns: The 'exec_result' of repository_ctx.execute(). """ - return repository_ctx.execute(cmdline) + env = {} + for k in ["PYTHONPATH", "PYTHON_BIN_PATH", "PYTHON_LIB_PATH"]: + if k in repository_ctx.os.environ: + env[k] = repository_ctx.os.environ[k] + return repository_ctx.execute(cmdline, environment = env) def _read_dir(repository_ctx, src_dir): """Returns a sorted list with all files in a directory. @@ -476,6 +480,7 @@ _ENVIRONS = [ BAZEL_SH, PYTHON_BIN_PATH, PYTHON_LIB_PATH, + "PYTHONPATH", ] local_python_configure = repository_rule(