--- a/papermill/engines.py
+++ b/papermill/engines.py
@@ -4,7 +4,7 @@
 from functools import wraps
 
 import dateutil
-import entrypoints
+from importlib.metadata import entry_points
 
 from .clientwrap import PapermillNotebookClient
 from .exceptions import PapermillException
@@ -33,7 +33,7 @@
 
         Load handlers provided by other packages
         """
-        for entrypoint in entrypoints.get_group_all("papermill.engine"):
+        for entrypoint in entry_points().select(group="papermill.engine"):
             self.register(entrypoint.name, entrypoint.load())
 
     def get_engine(self, name=None):
--- a/papermill/iorw.py
+++ b/papermill/iorw.py
@@ -5,7 +5,7 @@
 import warnings
 from contextlib import contextmanager
 
-import entrypoints
+from importlib.metadata import entry_points
 import nbformat
 import requests
 import yaml
@@ -116,7 +116,7 @@
 
     def register_entry_points(self):
         # Load handlers provided by other packages
-        for entrypoint in entrypoints.get_group_all("papermill.io"):
+        for entrypoint in entry_points().select(group="papermill.io"):
             self.register(entrypoint.name, entrypoint.load())
 
     def get_handler(self, path, extensions=None):
--- a/papermill/tests/test_engines.py
+++ b/papermill/tests/test_engines.py
@@ -489,10 +489,14 @@
         self.assertRaises(exceptions.PapermillException, self.papermill_engines.get_engine, "non-existent")
 
     def test_registering_entry_points(self):
-        fake_entrypoint = Mock(load=Mock())
+        fake_entrypoint = Mock()
         fake_entrypoint.name = "fake-engine"
+        fake_entrypoint.load.return_value = Mock()
 
-        with patch("entrypoints.get_group_all", return_value=[fake_entrypoint]) as mock_get_group_all:
+        mock_entry_points = Mock()
+        mock_entry_points.select.return_value = [fake_entrypoint]
+
+        with patch("papermill.engines.entry_points", return_value=mock_entry_points):
             self.papermill_engines.register_entry_points()
-            mock_get_group_all.assert_called_once_with("papermill.engine")
+            mock_entry_points.select.assert_called_once_with(group="papermill.engine")
             self.assertEqual(self.papermill_engines.get_engine("fake-engine"), fake_entrypoint.load.return_value)
--- a/papermill/tests/test_iorw.py
+++ b/papermill/tests/test_iorw.py
@@ -101,12 +101,16 @@
         self.assertIsInstance(self.papermill_io.get_handler(test_nb), NotebookNodeHandler)
 
     def test_entrypoint_register(self):
-        fake_entrypoint = Mock(load=Mock())
-        fake_entrypoint.name = "fake-from-entry-point://"
+        fake_entrypoint = Mock()
+        fake_entrypoint.name =  "fake-from-entry-point://"
+        fake_entrypoint.load.return_value = Mock()
 
-        with patch("entrypoints.get_group_all", return_value=[fake_entrypoint]) as mock_get_group_all:
+        mock_entry_points = Mock()
+        mock_entry_points.select.return_value = [fake_entrypoint]
+
+        with patch("papermill.iorw.entry_points", return_value=mock_entry_points):
             self.papermill_io.register_entry_points()
-            mock_get_group_all.assert_called_once_with("papermill.io")
+            mock_entry_points.select.assert_called_once_with(group="papermill.io")
             fake_ = self.papermill_io.get_handler("fake-from-entry-point://")
             assert fake_ == fake_entrypoint.load.return_value
 
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,7 +4,6 @@
 nbclient >= 0.2.0
 tqdm >= 4.32.2
 requests
-entrypoints
 tenacity >= 5.0.2
 aiohttp >=3.9.0; python_version=="3.12"
 ansicolors
