
<!---
Documentation generated by Skydoc
-->
<h1>Import pip requirements into Bazel.</h1>


<nav class="toc">
  <h2>Repository Rules</h2>
  <ul>
    <li><a href="#pip_import">pip_import</a></li>
  </ul>
  <h2>Macros</h2>
  <ul>
    <li><a href="#pip_repositories">pip_repositories</a></li>
  </ul>
</nav>
<a name="pip_repositories"></a>
## pip_repositories

<pre>
pip_repositories()
</pre>

Pull in dependencies needed for pulling in pip dependencies.

A placeholder method that will eventually pull in any dependencies
needed to install pip dependencies.

<a name="pip_import"></a>
## pip_import

<pre>
pip_import(<a href="#pip_import.name">name</a>, <a href="#pip_import.requirements">requirements</a>)
</pre>

A rule for importing <code>requirements.txt</code> dependencies into Bazel.

This rule imports a <code>requirements.txt</code> file and generates a new
<code>requirements.bzl</code> file.  This is used via the <code>WORKSPACE</code>
pattern:
<pre><code>pip_import(
    name = "foo",
    requirements = ":requirements.txt",
)
load("@foo//:requirements.bzl", "pip_install")
pip_install()
</code></pre>

You can then reference imported dependencies from your <code>BUILD</code>
file with:
<pre><code>load("@foo//:requirements.bzl", "package")
py_library(
    name = "bar",
    ...
    deps = [
       "//my/other:dep",
       package("futures"),
       package("mock"),
    ],
)
</code></pre>

Or alternatively:
<pre><code>load("@foo//:requirements.bzl", "all_packages")
py_binary(
    name = "baz",
    ...
    deps = [
       ":foo",
    ] + all_packages,
)
</code></pre>


<a name="pip_import_args"></a>
### Attributes


<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
    <tr id="pip_import.name">
      <td><code>name</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#name">Name</a>; Required</code></p>
        <p>A unique name for this rule.</p>
      </td>
    </tr>
    <tr id="pip_import.requirements">
      <td><code>requirements</code></td>
      <td>
        <p><code><a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; Required</code></p>
        <p>The label of a requirements.txt file.</p>
      </td>
    </tr>
  </tbody>
</table>
