If you make changes to TensorFlow Hub pip package, you will likely want to rebuild the pip package from source to try out your changes.
This requires:
- Python
- TensorFlow
- Git
- Bazel
Alternatively, if you install the protobuf compiler you can try out your changes without using bazel.
Setup a virtualenv
Activate virtualenv
Install virtualenv if it's not installed already:
~$ sudo apt-get install python-virtualenv
Create a virtual environment for the package creation:
~$ virtualenv --system-site-packages tensorflow_hub_env
And activate it:
~$ source ~/tensorflow_hub_env/bin/activate # bash, sh, ksh, or zsh
~$ source ~/tensorflow_hub_env/bin/activate.csh # csh or tcsh
Clone the TensorFlow Hub repository.
(tensorflow_hub_env)~/$ git clone https://github.com/tensorflow/hub
(tensorflow_hub_env)~/$ cd hub
Test your changes
Run TensorFlow Hub's tests
(tensorflow_hub_env)~/hub/$ bazel test tensorflow_hub:all
Build and install the package
Build TensorFlow Hub pip packaging script
To build a pip package for TensorFlow Hub:
(tensorflow_hub_env)~/hub/$ bazel build tensorflow_hub/pip_package:build_pip_package
Create the TensorFlow Hub pip package
(tensorflow_hub_env)~/hub/$ bazel-bin/tensorflow_hub/pip_package/build_pip_package \
/tmp/tensorflow_hub_pkg
Install and test the pip package (optional)
Run the following commands to install the pip package.
(tensorflow_hub_env)~/hub/$ pip install /tmp/tensorflow_hub_pkg/*.whl
Test import TensorFlow Hub:
(tensorflow_hub_env)~/hub/$ cd .. # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"
"Developer" install (experimental)
Building the package with bazel is the only officially supported method. However if you are unfamiliar with bazel simpler to work with open source tools. For that you can do a "developer install" of the package.
This installation method allows you to install the working directory into your python environment, so that ongoing changes are reflected when you import the package.
Setup the repository
First setup the virtualenv and repository, as described above.
Install protoc
Because TensorFlow Hub uses protobufs you will need the protobuf compiler to
create the necessary python _pb2.py
files from the .proto
files.
On a Mac:
(tensorflow_hub_env)~/hub/$ brew install protobuf
On Linux
(tensorflow_hub_env)~/hub/$ sudo apt install protobuf-compiler
Compile the .proto
files
Initially there are no _pb2.py
files in the directory:
(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py
Run protoc
to create them:
(tensorflow_hub_env)~/hub/$ protoc -I=tensorflow_hub --python_out=tensorflow_hub tensorflow_hub/*.proto
(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py
tensorflow_hub/image_module_info_pb2.py tensorflow_hub/module_attachment_pb2.py tensorflow_hub/module_def_pb2.py
Import directly from the repository
With the _pb2.py
files in place, you can use try out your modifications
directly from the TensorFlow Hub directory:
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"
Install in "developer" mode
Or to use this from outside the repository root, you can use the setup.py
develop
installation:
(tensorflow_hub_env)~/hub/$ python tensorflow_hub/pip_package/setup.py develop
Now you can use your local changes in a regular python virtualenv, without the need to rebuild and install the pip package for each new change:
(tensorflow_hub_env)~/hub/$ cd .. # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"
De-activate the virtualenv
(tensorflow_hub_env)~/hub/$ deactivate