diff --git a/docs/users_guide/flags.py b/docs/users_guide/flags.py
index 474d1b65d4bdb7275364c93ae039334b5171e6e0..50cde1f4a3d6d7e13d86ad860e3d66a14f7fceb2 100644
--- a/docs/users_guide/flags.py
+++ b/docs/users_guide/flags.py
@@ -50,7 +50,12 @@ import sphinx
 from sphinx import addnodes
 from sphinx.domains.std import GenericObject
 from sphinx.errors import SphinxError
-from packaging.version import parse
+try:
+    from packaging.version import parse as parse_version
+except ImportError as e:
+    # N.B. `packaging` is not available in Ubuntu 18.04 or Debian 9
+    from distutils.version import LooseVersion as parse_version
+
 from utils import build_table_from_list
 
 import os.path
@@ -628,8 +633,8 @@ def purge_flags(app, env, docname):
 
 def setup(app):
     # The override argument to add_directive_to_domain is only supported by >= 1.8
-    sphinx_version = parse(sphinx.__version__)
-    override_arg = {'override': True} if sphinx_version >= parse('1.8') else {}
+    sphinx_version = parse_version(sphinx.__version__)
+    override_arg = {'override': True} if sphinx_version >= parse_version('1.8') else {}
 
     # Add ghc-flag directive, and override the class with our own
     app.add_object_type('ghc-flag', 'ghc-flag')