prebuilt_python_library()
This is liable to change in the future.
A prebuilt_python_library() rule is used to include prebuilt python packages into the output of a top-level python_binary or python_test rule.
These prebuilt libraries can either be whl files or eggs
whls for most packages are available for download from PyPI. The whl used may be downloaded with remote_file. However, Buck does not attempt to infer dependency information from pip, so that information will have to be imparted by the user.
To create an egg for a package, run python setup.py bdist_egg in the package source distribution.
Arguments
name(required) #The short name for this build target.
binary_src(required) #The path to the
.whlor.eggto use. Note:.eggfiles have a very particular naming convention that must be followed - otherwise pex will not find the dependency properly at runtime!deps(defaults to[]) #Other
prebuilt_python_library()rules which this library depends on. These may also bepython_libraryrules if you want to depend on a source-based copy of the library.exclude_deps_from_merged_linking(defaults toFalse) #When linking the top-level binary with a
merged, do not merge or re-link any native transitive deps of this library. This is useful if this library wraps prebuilt native extensions which cannot be re-linked as part of library merging.[python].native_link_strategyvisibility(defaults to[]) #List of build target patterns that identify the build rules that can include this rule as a dependency, for example, by listing it in their
depsorexported_depsattributes. For more information, see visibility.licenses(defaults to[]) #Set of license files for this library. To get the list of license files for a given build rule and all of its dependencies, you can use
buck query.labels(defaults to[]) #Set of arbitrary strings which allow you to annotate a build rule with tags that can be searched for over an entire dependency tree using
buck query attrfilter().
Examples
# A simple prebuilt_python_library with no external dependencies.
remote_file(
name = "requests-download",
url = "https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl",
sha1 = "e1fc28120002395fe1f2da9aacea4e15a449d9ee",
out = "requests-2.22.0-py2.py3-none-any.whl",
)
prebuilt_python_library(
name = "requests",
binary_src = ":requests-download",
)
# A slightly more complex example
prebuilt_python_library(
name = "greenlet",
binary_src = "greenlet-0.4.7-py2.7-macosx-10.10-x86_64.egg",
)
prebuilt_python_library(
name = "gevent",
binary_src = "gevent-1.0.2-py2.7-macosx-10.10-x86_64.egg",
deps = [
":greenlet",
],
)