continue to use PyEval_GetBuiltins for PyPy
diff --git a/include/pybind11/detail/internals.h b/include/pybind11/detail/internals.h
index b98b2bc..6049791 100644
--- a/include/pybind11/detail/internals.h
+++ b/include/pybind11/detail/internals.h
@@ -423,7 +423,7 @@
     str id(id_cstr);
 
     dict state_dict;
-#if PY_VERSION_HEX < 0x03080000
+#if PY_VERSION_HEX < 0x03080000 || defined(PYPY_VERSION)
     state_dict = reinterpret_borrow<dict>(PyEval_GetBuiltins());
 #elif PY_VERSION_HEX < 0x03090000
     state_dict = reinterpret_borrow<dict>(PyInterpreterState_GetDict(_PyInterpreterState_Get()));
diff --git a/tests/test_embed/test_interpreter.cpp b/tests/test_embed/test_interpreter.cpp
index 7b911b2..afcb4fc 100644
--- a/tests/test_embed/test_interpreter.cpp
+++ b/tests/test_embed/test_interpreter.cpp
@@ -170,7 +170,7 @@
 
 bool has_pybind11_internals_builtin() {
     py::dict state_dict;
-#if PY_VERSION_HEX < 0x03080000
+#if PY_VERSION_HEX < 0x03080000 || defined(PYPY_VERSION)
     state_dict = py::reinterpret_borrow<py::dict>(PyEval_GetBuiltins());
 #elif PY_VERSION_HEX < 0x03090000
     state_dict