fix(system_python): write import paths to generated file instead of using PYTHONPATH (#3242) This changes the system_python bootstrap to use a 2-stage process like the script bootstrap does. Among other things, this means the import paths are written to a generated file (`bazel_site_init.py`, same as boostrap=script) and sys.path setup is performed by the Python code in stage 2. Since the PYTHONPATH environment variable isn't used, this fixes the problem on Windows where the value is too long. This also better unifies the system_python and script based bootstraps because the same stage 2 code and bazel_site_init code is used. Along the way, several other improvements: * Fixes path ordering for system_python. The order now matches venv ordering (stdlib, binary paths, runtime site packages). * Makes the venv-based solution work when the site module is disabled (`-S`). * Makes `interpreter_args` attribute and `RULES_PYTHON_ADDITIONAL_INTERPRETER_ARGS` env var work with system_python. * Makes `main_module` work with system_python. * Progress towards a supportable non-shell based bootstrap (a user requested this because their environment doesn't install any shells as a security precaution). Fixes https://github.com/bazel-contrib/rules_python/issues/2652
This repository is the home of the core Python rules -- py_library, py_binary, py_test, py_proto_library, and related symbols that provide the basis for Python support in Bazel. It also contains package installation rules for integrating with PyPI and other indices.
Documentation for rules_python is at https://rules-python.readthedocs.io and in the Bazel Build Encyclopedia.
Examples live in the examples directory.
The core rules are stable. Their implementation is subject to Bazel's backward compatibility policy. This repository aims to follow semantic versioning.
The Bazel community maintains this repository. Neither Google nor the Bazel team provides support for the code. However, this repository is part of the test suite used to vet new Bazel releases. See How to contribute page for information on our development workflow.
For detailed documentation, see https://rules-python.readthedocs.io
See Bzlmod support for more details.