diff --git a/swiftclient/version.py b/swiftclient/version.py
index 6f01f369..4a03ce98 100644
--- a/swiftclient/version.py
+++ b/swiftclient/version.py
@@ -12,16 +12,30 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import pkg_resources
+version_string = None
 
+# First, try to get our version out of PKG-INFO. If we're installed,
+# this'll let us find our version without pulling in pbr. After all, if
+# we're installed on a system, we're not in a Git-managed source tree, so
+# pbr doesn't really buy us anything.
 try:
-    # First, try to get our version out of PKG-INFO. If we're installed,
-    # this will let us find our version without pulling in pbr. After all, if
-    # we're installed on a system, we're not in a Git-managed source tree, so
-    # pbr doesn't really buy us anything.
-    version_string = pkg_resources.get_provider(
-        pkg_resources.Requirement.parse('python-swiftclient')).version
-except pkg_resources.DistributionNotFound:
+    import importlib.metadata
+except ImportError:
+    # python < 3.8
+    import pkg_resources
+    try:
+        version_string = pkg_resources.get_provider(
+            pkg_resources.Requirement.parse('python-swiftclient')).version
+    except pkg_resources.DistributionNotFound:
+        pass
+else:
+    try:
+        version_string = importlib.metadata.distribution(
+            'python-swiftclient').version
+    except importlib.metadata.PackageNotFoundError:
+        pass
+
+if version_string is None:
     # No PKG-INFO? We're probably running from a checkout, then. Let pbr do
     # its thing to figure out a version number.
     import pbr.version