diff options
Diffstat (limited to 'docs/sphinx/pip.md')
-rw-r--r-- | docs/sphinx/pip.md | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/docs/sphinx/pip.md b/docs/sphinx/pip.md deleted file mode 100644 index 34248d2..0000000 --- a/docs/sphinx/pip.md +++ /dev/null @@ -1,84 +0,0 @@ -(pip-integration)= -# Pip Integration - -To pull in dependencies from PyPI, the `pip_parse` function is used, which -invokes `pip` to download and install dependencies from PyPI. - -In your WORKSPACE file: - -```starlark -load("@rules_python//python:pip.bzl", "pip_parse") - -pip_parse( - name = "pip_deps", - requirements_lock = ":requirements.txt", -) - -load("@pip_deps//:requirements.bzl", "install_deps") - -install_deps() -``` - -You can then reference installed dependencies from a `BUILD` file with: - -```starlark -load("@pip_deps//:requirements.bzl", "requirement") - -py_library( - name = "bar", - ... - deps = [ - "//my/other:dep", - requirement("requests"), - requirement("numpy"), - ], -) -``` - -In addition to the `requirement` macro, which is used to access the generated `py_library` -target generated from a package's wheel, The generated `requirements.bzl` file contains -functionality for exposing [entry points][whl_ep] as `py_binary` targets as well. - -[whl_ep]: https://packaging.python.org/specifications/entry-points/ - -```starlark -load("@pip_deps//:requirements.bzl", "entry_point") - -alias( - name = "pip-compile", - actual = entry_point( - pkg = "pip-tools", - script = "pip-compile", - ), -) -``` - -Note that for packages whose name and script are the same, only the name of the package -is needed when calling the `entry_point` macro. - -```starlark -load("@pip_deps//:requirements.bzl", "entry_point") - -alias( - name = "flake8", - actual = entry_point("flake8"), -) -``` - -(vendoring-requirements)= -## Vendoring the requirements.bzl file - -In some cases you may not want to generate the requirements.bzl file as a repository rule -while Bazel is fetching dependencies. For example, if you produce a reusable Bazel module -such as a ruleset, you may want to include the requirements.bzl file rather than make your users -install the WORKSPACE setup to generate it. -See https://github.com/bazelbuild/rules_python/issues/608 - -This is the same workflow as Gazelle, which creates `go_repository` rules with -[`update-repos`](https://github.com/bazelbuild/bazel-gazelle#update-repos) - -To do this, use the "write to source file" pattern documented in -https://blog.aspect.dev/bazel-can-write-to-the-source-folder -to put a copy of the generated requirements.bzl into your project. -Then load the requirements.bzl file directly rather than from the generated repository. -See the example in rules_python/examples/pip_parse_vendored. |