diff --git a/lib/manager/poetry/__fixtures__/pyproject.2.toml b/lib/manager/poetry/__fixtures__/pyproject.2.toml
index 906c83920bc86b5544d91e97569e4edf38c3a1dd..615286f223408be814aaf83420ab02dbe227e22e 100644
--- a/lib/manager/poetry/__fixtures__/pyproject.2.toml
+++ b/lib/manager/poetry/__fixtures__/pyproject.2.toml
@@ -14,3 +14,7 @@ dep4 = { path = "/some/path/" }
 extra_dep1 = "^0.8.3"
 extra_dep2 = "^0.9.4"
 extra_dep3 = '^0.4.0'
+
+[build-system]
+requires = ["poetry>=1.0", "wheel"]
+build-backend = "poetry.core.masonry.api"
diff --git a/lib/manager/poetry/__fixtures__/pyproject.4.toml b/lib/manager/poetry/__fixtures__/pyproject.4.toml
index 0ae8e12d569f20cf37e8389aa9c2a219b75985e4..bcbc4a05c5c8ad904cd66320a5c8d4604532daae 100644
--- a/lib/manager/poetry/__fixtures__/pyproject.4.toml
+++ b/lib/manager/poetry/__fixtures__/pyproject.4.toml
@@ -9,3 +9,7 @@ foo = [
     {version = "<=1.9", python = "^2.7"},
     {version = "^2.0", python = "^3.4"}
 ]
+
+[build-system]
+requires = ["poetry>=1.1.2", "setuptools", "poetry-dynamic-versioning"]
+build-backend = "poetry.masonry.api"
diff --git a/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap b/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap
index 145316fedaef3f88adedcd33afe168c7e7fee276..0ac8920c45d12d560b76e6be7269aa1722c07587 100644
--- a/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap
+++ b/lib/manager/poetry/__snapshots__/artifacts.spec.ts.snap
@@ -135,7 +135,7 @@ Array [
     },
   },
   Object {
-    "cmd": "docker run --rm --name=renovate_python --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -w \\"/tmp/github/some/repo\\" renovate/python:3.4.2 bash -l -c \\"pip install poetry && poetry update --lock --no-interaction dep1\\"",
+    "cmd": "docker run --rm --name=renovate_python --label=renovate_child -v \\"/tmp/github/some/repo\\":\\"/tmp/github/some/repo\\" -w \\"/tmp/github/some/repo\\" renovate/python:3.4.2 bash -l -c \\"pip install 'poetry>=1.1.2' setuptools 'poetry-dynamic-versioning>1' && poetry update --lock --no-interaction dep1\\"",
     "options": Object {
       "cwd": "/tmp/github/some/repo",
       "encoding": "utf-8",
diff --git a/lib/manager/poetry/__snapshots__/extract.spec.ts.snap b/lib/manager/poetry/__snapshots__/extract.spec.ts.snap
index e71f6593a5311ed90418283454cdeaf9b55cdfc7..4f7984056b436ccc54443aa7ed5039905a831b75 100644
--- a/lib/manager/poetry/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/poetry/__snapshots__/extract.spec.ts.snap
@@ -358,7 +358,9 @@ Object {
 
 exports[`lib/manager/poetry/extract extractPackageFile() extracts multiple dependencies (with dep = {version = "1.2.3"} case) 1`] = `
 Object {
-  "constraints": Object {},
+  "constraints": Object {
+    "poetry": "poetry>=1.0 wheel",
+  },
   "deps": Array [
     Object {
       "currentValue": "*",
@@ -540,7 +542,9 @@ Array [
 
 exports[`lib/manager/poetry/extract extractPackageFile() handles multiple constraint dependencies 1`] = `
 Object {
-  "constraints": Object {},
+  "constraints": Object {
+    "poetry": "poetry>=1.1.2 setuptools poetry-dynamic-versioning",
+  },
   "deps": Array [
     Object {
       "currentValue": "",
diff --git a/lib/manager/poetry/artifacts.spec.ts b/lib/manager/poetry/artifacts.spec.ts
index f08480e77135adf7d4dacbec52a9446c15b4eae0..c8a8aa9cb8f354723f7c6ffc734030758892ab92 100644
--- a/lib/manager/poetry/artifacts.spec.ts
+++ b/lib/manager/poetry/artifacts.spec.ts
@@ -150,7 +150,10 @@ describe('.updateArtifacts()', () => {
         newPackageFileContent: '{}',
         config: {
           ...config,
-          constraints: { python: '~2.7 || ^3.4' },
+          constraints: {
+            python: '~2.7 || ^3.4',
+            poetry: 'poetry>=1.1.2 setuptools poetry-dynamic-versioning>1',
+          },
         },
       })
     ).not.toBeNull();
diff --git a/lib/manager/poetry/artifacts.ts b/lib/manager/poetry/artifacts.ts
index 1a7a3eb7d6b5e322a2e4f8039509ceebdb7d56e9..c55f9c2afd771488d0add4ede42c26de51f932b0 100644
--- a/lib/manager/poetry/artifacts.ts
+++ b/lib/manager/poetry/artifacts.ts
@@ -122,7 +122,8 @@ export async function updateArtifacts({
     }
     const tagConstraint = getPythonConstraint(existingLockFileContent, config);
     const poetryRequirement = config.constraints?.poetry || 'poetry';
-    const poetryInstall = 'pip install ' + quote(poetryRequirement);
+    const poetryInstall =
+      'pip install ' + poetryRequirement.split(' ').map(quote).join(' ');
     const extraEnv = getSourceCredentialVars(
       newPackageFileContent,
       packageFileName
diff --git a/lib/manager/poetry/extract.ts b/lib/manager/poetry/extract.ts
index d57ad2c9c5416b0c42e2e274b901b615edee5568..c74a695fce11ede553102a8ec3cfa8acb3d566f8 100644
--- a/lib/manager/poetry/extract.ts
+++ b/lib/manager/poetry/extract.ts
@@ -151,7 +151,9 @@ export async function extractPackageFile(
 
   // https://python-poetry.org/docs/pyproject/#poetry-and-pep-517
   if (
-    pyprojectfile['build-system']?.['build-backend'] === 'poetry.masonry.api'
+    pyprojectfile['build-system']?.['build-backend'] === 'poetry.masonry.api' ||
+    pyprojectfile['build-system']?.['build-backend'] ===
+      'poetry.core.masonry.api'
   ) {
     constraints.poetry = pyprojectfile['build-system']?.requires.join(' ');
   }