Создание pip-пакета TensorFlow Hub с использованием Linux

Если вы вносите изменения в пакет pip TensorFlow Hub, вам, скорее всего, захочется пересобрать пакет pip из исходного кода, чтобы опробовать свои изменения.

Для этого необходимо:

Альтернативно, если вы установите компилятор protobuf, вы можете опробовать свои изменения без использования bazel .

Настройка виртуального окружения

Активировать виртуальную среду

Установите virtualenv, если он еще не установлен:

~$ sudo apt-get install python-virtualenv

Создайте виртуальную среду для создания пакета:

~$ virtualenv --system-site-packages tensorflow_hub_env

И активируйте его:

~$ source ~/tensorflow_hub_env/bin/activate  # bash, sh, ksh, or zsh
~$ source ~/tensorflow_hub_env/bin/activate.csh  # csh or tcsh

Клонируйте репозиторий TensorFlow Hub.

(tensorflow_hub_env)~/$ git clone https://github.com/tensorflow/hub
(tensorflow_hub_env)~/$ cd hub

Проверьте свои изменения

Запустите тесты TensorFlow Hub

(tensorflow_hub_env)~/hub/$ bazel test tensorflow_hub:all

Сборка и установка пакета

Создайте скрипт упаковки pip в TensorFlow Hub.

Чтобы создать пакет pip для TensorFlow Hub:

(tensorflow_hub_env)~/hub/$ bazel build tensorflow_hub/pip_package:build_pip_package

Создайте пакет pip TensorFlow Hub.

(tensorflow_hub_env)~/hub/$ bazel-bin/tensorflow_hub/pip_package/build_pip_package \
/tmp/tensorflow_hub_pkg

Установите и протестируйте пакет pip (необязательно).

Выполните следующие команды, чтобы установить пакет pip.

(tensorflow_hub_env)~/hub/$ pip install /tmp/tensorflow_hub_pkg/*.whl

Тестовый импорт TensorFlow Hub:

(tensorflow_hub_env)~/hub/$ cd ..  # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

Установка «Разработчик» (экспериментальная)

Сборка пакета с помощью bazel — единственный официально поддерживаемый метод. Однако если вы не знакомы с bazel, проще работать с инструментами с открытым исходным кодом. Для этого вы можете выполнить «установку разработчиком» пакета.

Этот метод установки позволяет вам установить рабочий каталог в вашу среду Python, чтобы текущие изменения отражались при импорте пакета.

Настройте репозиторий

Сначала настройте virtualenv и репозиторий, как описано выше .

Установить protoc

Поскольку TensorFlow Hub использует protobufs, вам понадобится компилятор protobuf для создания необходимых файлов Python _pb2.py из файлов .proto .

На Mac:

(tensorflow_hub_env)~/hub/$ brew install protobuf

В Linux

(tensorflow_hub_env)~/hub/$ sudo apt install protobuf-compiler

Скомпилируйте файлы .proto

Изначально в каталоге нет файлов _pb2.py :

(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py

Запустите protoc , чтобы создать их:

(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

Импортировать напрямую из репозитория

Имея файлы _pb2.py , вы можете опробовать свои изменения непосредственно из каталога TensorFlow Hub:

(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

Установить в режиме "разработчика"

Или, чтобы использовать это вне корня репозитория, вы можете использовать установку setup.py develop :

(tensorflow_hub_env)~/hub/$ python tensorflow_hub/pip_package/setup.py develop

Теперь вы можете использовать свои локальные изменения в обычной виртуальной среде Python без необходимости пересобирать и устанавливать пакет pip для каждого нового изменения:

(tensorflow_hub_env)~/hub/$ cd ..  # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

Деактивировать виртуальную среду

(tensorflow_hub_env)~/hub/$ deactivate