diff --git a/config/python.m4 b/config/python.m4
index e29f05987b5561c95eb301f70d9adece12be97d6..babf5ab1dbe898fab3a9f3698c72f24982659c34 100644
--- a/config/python.m4
+++ b/config/python.m4
@@ -88,12 +88,18 @@ then
 	found_shlib=1
 else
 	# Otherwise, guess the base name of the shlib.
-	# LDVERSION was added in Python 3.2, before that use $python_version.
+	# LDVERSION was added in Python 3.2, before that use VERSION,
+	# or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS.
 	python_ldversion=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"`
 	if test x"${python_ldversion}" != x""; then
 		ldlibrary="python${python_ldversion}"
 	else
-		ldlibrary="python${python_version}"
+		python_version_var=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"`
+		if test x"${python_version_var}" != x""; then
+			ldlibrary="python${python_version_var}"
+		else
+			ldlibrary="python${python_version}"
+		fi
 	fi
 	# Search for a likely-looking file.
 	found_shlib=0
@@ -124,6 +130,21 @@ else
 			done
 		done
 	fi
+	# As usual, Windows has its own ideas.  c:/Windows/System32 takes the
+	# place of /usr/lib as a possible default library location, and the
+	# "lib" prefix might not be there.
+	if test "$found_shlib" != 1 -a "$PORTNAME" = win32 ; then
+		for d in "${python_libdir}" "${python_configdir}" c:/Windows/System32
+		do
+			for f in "$d/lib${ldlibrary}.dll" "$d/${ldlibrary}.dll" ; do
+				if test -e "$f"; then
+					python_libdir="$d"
+					found_shlib=1
+					break 2
+				fi
+			done
+		done
+	fi
 fi
 if test "$found_shlib" != 1; then
 	AC_MSG_ERROR([could not find shared library for Python
diff --git a/configure b/configure
index 3d08f5a5e9514839886a23d98c9e158e951f0652..204daa056d5bceaadb8a90d5d872766453a110a0 100755
--- a/configure
+++ b/configure
@@ -7631,12 +7631,18 @@ then
 	found_shlib=1
 else
 	# Otherwise, guess the base name of the shlib.
-	# LDVERSION was added in Python 3.2, before that use $python_version.
+	# LDVERSION was added in Python 3.2, before that use VERSION,
+	# or failing that, $python_version from _PGAC_CHECK_PYTHON_DIRS.
 	python_ldversion=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"`
 	if test x"${python_ldversion}" != x""; then
 		ldlibrary="python${python_ldversion}"
 	else
-		ldlibrary="python${python_version}"
+		python_version_var=`${PYTHON} -c "import distutils.sysconfig; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('VERSION'))))"`
+		if test x"${python_version_var}" != x""; then
+			ldlibrary="python${python_version_var}"
+		else
+			ldlibrary="python${python_version}"
+		fi
 	fi
 	# Search for a likely-looking file.
 	found_shlib=0
@@ -7667,6 +7673,21 @@ else
 			done
 		done
 	fi
+	# As usual, Windows has its own ideas.  c:/Windows/System32 takes the
+	# place of /usr/lib as a possible default library location, and the
+	# "lib" prefix might not be there.
+	if test "$found_shlib" != 1 -a "$PORTNAME" = win32 ; then
+		for d in "${python_libdir}" "${python_configdir}" c:/Windows/System32
+		do
+			for f in "$d/lib${ldlibrary}.dll" "$d/${ldlibrary}.dll" ; do
+				if test -e "$f"; then
+					python_libdir="$d"
+					found_shlib=1
+					break 2
+				fi
+			done
+		done
+	fi
 fi
 if test "$found_shlib" != 1; then
 	as_fn_error $? "could not find shared library for Python