diff --git a/lib/workers/repository/process/lookup/filter.ts b/lib/workers/repository/process/lookup/filter.ts
index 7d7f9d729f08c3c2bb159b49097174d9a78c0738..7fbf76f36e2dde3063a634854a42eda4bc23eb58 100644
--- a/lib/workers/repository/process/lookup/filter.ts
+++ b/lib/workers/repository/process/lookup/filter.ts
@@ -4,6 +4,8 @@ import * as allVersioning from '../../../../versioning';
 import { Release } from '../../../../datasource';
 import { CONFIG_VALIDATION } from '../../../../constants/error-messages';
 import * as npmVersioning from '../../../../versioning/npm';
+import * as pep440 from '../../../../versioning/pep440';
+import * as poetryVersioning from '../../../../versioning/poetry';
 import { regEx } from '../../../../util/regex';
 
 export interface FilterConfig {
@@ -95,6 +97,17 @@ export function filterVersions(
       filteredVersions = filteredVersions.filter((v) =>
         semver.satisfies(semver.coerce(v), allowedVersions)
       );
+    } else if (
+      versioning === poetryVersioning.id &&
+      pep440.isValid(allowedVersions)
+    ) {
+      logger.debug(
+        { depName: config.depName },
+        'Falling back to pypi syntax for allowedVersions'
+      );
+      filteredVersions = filteredVersions.filter((v) =>
+        pep440.matches(v, allowedVersions)
+      );
     } else {
       const error = new Error(CONFIG_VALIDATION);
       error.configFile = 'config';
diff --git a/lib/workers/repository/process/lookup/index.spec.ts b/lib/workers/repository/process/lookup/index.spec.ts
index d3ff35ed83c0c965296218b16d95a46af6390ed9..698a49a0062b4ba51bcfdb8fd556f92fd7fd0934 100644
--- a/lib/workers/repository/process/lookup/index.spec.ts
+++ b/lib/workers/repository/process/lookup/index.spec.ts
@@ -13,6 +13,7 @@ import * as dockerVersioning from '../../../../versioning/docker';
 import * as gitVersioning from '../../../../versioning/git';
 import * as npmVersioning from '../../../../versioning/npm';
 import * as pep440Versioning from '../../../../versioning/pep440';
+import * as poetryVersioning from '../../../../versioning/poetry';
 import * as datasourceNpm from '../../../../datasource/npm';
 import * as datasourcePypi from '../../../../datasource/pypi';
 import * as datasourcePackagist from '../../../../datasource/packagist';
@@ -171,6 +172,15 @@ describe('workers/repository/process/lookup', () => {
       nock('https://registry.npmjs.org').get('/q').reply(200, qJson);
       expect((await lookup.lookupUpdates(config)).updates).toHaveLength(1);
     });
+    it('falls back to pep440 syntax allowedVersions', async () => {
+      config.currentValue = '0.4.0';
+      config.allowedVersions = '==0.9.4';
+      config.depName = 'q';
+      config.versioning = poetryVersioning.id; // this doesn't make sense but works for this test
+      config.datasource = datasourceNpm.id; // this doesn't make sense but works for this test
+      nock('https://registry.npmjs.org').get('/q').reply(200, qJson);
+      expect((await lookup.lookupUpdates(config)).updates).toHaveLength(1);
+    });
     it('skips invalid allowedVersions', async () => {
       config.currentValue = '0.4.0';
       config.allowedVersions = 'less than 1';