google-deepmind/dm-haiku

installing dm-tree requires bazel on py3.8

joaogui1 opened this issue · 8 comments

Right now it seems one needs bazel to install haiku (even using pip)

tycai:~/src$ python3 -m venv tmp && cd tmp/ && source bin/activate
tycai:~/src/tmp$ which bazel
tycai:~/src/tmp$ pip install --upgrade pip
# some output
tycai:~/src/tmp$ pip install jax jaxlib git+https://github.com/deepmind/dm-haiku
# more output
tycai:~/src/tmp$ python
Python 3.7.7 (default, Mar 10 2020, 13:18:53) 
[GCC 9.2.1 20191109] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import haiku as hk
>>> import jax
>>> import numpy as np
>>> hk.transform(lambda x: hk.Linear(2)(x)).init(jax.random.PRNGKey(428), np.ones((8, 3)))
# some warnings
frozendict({
  'linear': frozendict({
              'b': DeviceArray([0., 0.], dtype=float32),
              'w': DeviceArray([[-0.74963224,  0.05108356],
                                [-0.64863616, -0.96099967],
                                [ 0.69329786,  0.10406391]], dtype=float32),
            }),
})

This looks fine to me. More generally, Haiku is pure-Python, so I'm skeptical that bazel is required if you can install JAX. Can you provide more details?

Frankly, yesterday it told me to download bazel and after doing that it installed, but today it doesn't seem to be asking for that. I'm not sure what happened and I'm sorry for opening an issue without more investigation

@trevorcai I am also running into an issue with bazel dependency related to the dm-tree requirement.

Okay so this installs fine on python 3.7 but on python 3.8 fails with the bazel dependency installing dm-tree

@superbobry Mind taking a look at dm-tree on py3.8?

Thanks @jessebett for getting more info on the issue

I see the issue, we're not providing prebuilt wheels for Py3.8+ to PyPI so they're running setup.py on your machine. I'll raise internally to add Py3.8 wheels to Haiku/Sonnet/dm-tree/...

#45 removes dm-tree as a Haiku dependency for users, so this shouldn't be an issue for naive installation. (We still depend on dm-tree in the examples dir and in tests, though.)
I'll make a new issue in dm-tree and close this one.