diff --git a/lib/modules/manager/pep621/artifacts.spec.ts b/lib/modules/manager/pep621/artifacts.spec.ts
index f104c7e51f43272b8abb56f4df45eececaf40e4d..f48d42050a816d16003fa7bef9625c34af7be0d8 100644
--- a/lib/modules/manager/pep621/artifacts.spec.ts
+++ b/lib/modules/manager/pep621/artifacts.spec.ts
@@ -42,6 +42,10 @@ describe('modules/manager/pep621/artifacts', () => {
       fs.getSiblingFileName.mockReturnValueOnce('pdm.lock');
       fs.readLocalFile.mockResolvedValueOnce('old test content');
       fs.readLocalFile.mockResolvedValueOnce('new test content');
+      // python
+      getPkgReleases.mockResolvedValueOnce({
+        releases: [{ version: '3.11.1' }, { version: '3.11.2' }],
+      });
       // pdm
       getPkgReleases.mockResolvedValueOnce({
         releases: [{ version: 'v2.6.1' }, { version: 'v2.5.0' }],
@@ -86,6 +90,8 @@ describe('modules/manager/pep621/artifacts', () => {
             '-w "/tmp/github/some/repo" ' +
             'containerbase/sidecar ' +
             'bash -l -c "' +
+            'install-tool python 3.11.2 ' +
+            '&& ' +
             'install-tool pdm v2.5.0 ' +
             '&& ' +
             'pdm update dep1' +
diff --git a/lib/modules/manager/pep621/processors/pdm.spec.ts b/lib/modules/manager/pep621/processors/pdm.spec.ts
index d455b0b722b576faa14a58dbf28da5ec6e3eb661..b6a2801cbdc9fb8d5b5714a73578e0865e5ba79b 100644
--- a/lib/modules/manager/pep621/processors/pdm.spec.ts
+++ b/lib/modules/manager/pep621/processors/pdm.spec.ts
@@ -41,6 +41,10 @@ describe('modules/manager/pep621/processors/pdm', () => {
       fs.getSiblingFileName.mockReturnValueOnce('pdm.lock');
       fs.readLocalFile.mockResolvedValueOnce('test content');
       fs.readLocalFile.mockResolvedValueOnce('test content');
+      // python
+      getPkgReleases.mockResolvedValueOnce({
+        releases: [{ version: '3.11.1' }, { version: '3.11.2' }],
+      });
       // pdm
       getPkgReleases.mockResolvedValueOnce({
         releases: [{ version: 'v2.6.1' }, { version: 'v2.5.0' }],
@@ -71,6 +75,8 @@ describe('modules/manager/pep621/processors/pdm', () => {
             '-w "/tmp/github/some/repo" ' +
             'containerbase/sidecar ' +
             'bash -l -c "' +
+            'install-tool python 3.11.2 ' +
+            '&& ' +
             'install-tool pdm v2.5.0 ' +
             '&& ' +
             'pdm update dep1' +
@@ -106,6 +112,10 @@ describe('modules/manager/pep621/processors/pdm', () => {
       fs.getSiblingFileName.mockReturnValueOnce('pdm.lock');
       fs.readLocalFile.mockResolvedValueOnce('test content');
       fs.readLocalFile.mockResolvedValueOnce('changed test content');
+      // python
+      getPkgReleases.mockResolvedValueOnce({
+        releases: [{ version: '3.11.1' }, { version: '3.11.2' }],
+      });
       // pdm
       getPkgReleases.mockResolvedValueOnce({
         releases: [{ version: 'v2.6.1' }, { version: 'v2.5.0' }],
@@ -140,6 +150,10 @@ describe('modules/manager/pep621/processors/pdm', () => {
       fs.getSiblingFileName.mockReturnValueOnce('pdm.lock');
       fs.readLocalFile.mockResolvedValueOnce('test content');
       fs.readLocalFile.mockResolvedValueOnce('changed test content');
+      // python
+      getPkgReleases.mockResolvedValueOnce({
+        releases: [{ version: '3.11.1' }, { version: '3.11.2' }],
+      });
       // pdm
       getPkgReleases.mockResolvedValueOnce({
         releases: [{ version: 'v2.6.1' }, { version: 'v2.5.0' }],
diff --git a/lib/modules/manager/pep621/processors/pdm.ts b/lib/modules/manager/pep621/processors/pdm.ts
index cf717b6dbfcfd0157f5a722b431fa185d67335ce..bd21052cd3da36b53d00c17c523c94e3af9657f8 100644
--- a/lib/modules/manager/pep621/processors/pdm.ts
+++ b/lib/modules/manager/pep621/processors/pdm.ts
@@ -64,15 +64,18 @@ export class PdmProcessor implements PyProjectProcessor {
         logger.debug('No pdm.lock found');
         return null;
       }
-
-      const toolConstraint: ToolConstraint = {
+      const pythonConstraint: ToolConstraint = {
+        toolName: 'python',
+        constraint: config.constraints?.python,
+      };
+      const pdmConstraint: ToolConstraint = {
         toolName: 'pdm',
         constraint: config.constraints?.pdm,
       };
 
       const execOptions: ExecOptions = {
         docker: {},
-        toolConstraints: [toolConstraint],
+        toolConstraints: [pythonConstraint, pdmConstraint],
       };
 
       // on lockFileMaintenance do not specify any packages and update the complete lock file