Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve missing optional dependency error #1989

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 16 additions & 12 deletions tensorflow_probability/python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,16 @@ def _validate_tf_environment(package):
"""
try:
import tensorflow as tf
except (ImportError, ModuleNotFoundError):
# Print more informative error message, then reraise.
print('\n\nFailed to import TensorFlow. Please note that TensorFlow is not '
'installed by default when you install TensorFlow Probability. This '
'is so that users can decide whether to install the GPU-enabled '
except (ImportError, ModuleNotFoundError) as err:
# Raise same type of error, but with more informative error message.
# Using print will lead to a message above the stacktrace and can easily
# be overlooked. For Python 3.11+ may switch to "err.add_note(...)"
raise type(err)('\n\nFailed to import TensorFlow. Please note that TensorFlow '
'is not installed by default when you install TensorFlow Probability. '
'This is so that users can decide whether to install the GPU-enabled '
'TensorFlow package. To use TensorFlow Probability, please install '
'the most recent version of TensorFlow, by following instructions at '
'https://tensorflow.org/install.\n\n')
raise
'https://tensorflow.org/install.\n\n') from err

import distutils.version

Expand Down Expand Up @@ -77,16 +78,19 @@ def _validate_tf_environment(package):
if required_tensorflow_version[0] == '2':
try:
import tf_keras # pylint: disable=unused-import
except (ImportError, ModuleNotFoundError):
# Print more informative error message, then reraise.
print('\n\nFailed to import TF-Keras. Please note that TF-Keras is not '
except (ImportError, ModuleNotFoundError) as err:
# Raise same type of error, but with more informative error message.
# Using print will lead to a message above the stacktrace and can easily
# be overlooked. For Python 3.11+ may switch to "err.add_note(...)"
raise type(err)('\n\nFailed to import TF-Keras. '
'Please note that TF-Keras is not '
'installed by default when you install TensorFlow Probability. '
'This is so that JAX-only users do not have to install TensorFlow '
'or TF-Keras. To use TensorFlow Probability with TensorFlow, '
'please install the tf-keras or tf-keras-nightly package.\n'
'This can be be done through installing the '
'tensorflow-probability[tf] extra.\n\n')
raise
'tensorflow-probability[tf] extra or directly installing tf-keras '
'(i.e. when using conda/mamba).\n\n') from err


# Declare these explicitly to appease pytype, which otherwise misses them,
Expand Down