diff --git a/Include/Python.h b/Include/Python.h
index aa805e7..d900978 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -73,9 +73,7 @@
 #include "longintrepr.h"
 #include "boolobject.h"
 #include "floatobject.h"
-#ifndef WITHOUT_COMPLEX
 #include "complexobject.h"
-#endif
 #include "rangeobject.h"
 #include "memoryobject.h"
 #include "tupleobject.h"
diff --git a/Misc/NEWS b/Misc/NEWS
index e0dd0cc..7ff7783 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue *7147: Remove support for compiling Python without complex number
+  support.
+
 - Issue #7120: logging: Removed import of multiprocessing which is causing
   crash in GAE.
 
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index 30d8b52..ccee382 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -12,8 +12,6 @@
 #include <ieeefp.h>
 #endif
 
-#ifndef WITHOUT_COMPLEX
-
 /* elementary operations on complex numbers */
 
 static Py_complex c_1 = {1., 0.};
@@ -1108,5 +1106,3 @@
 	complex_new,				/* tp_new */
 	PyObject_Del,           		/* tp_free */
 };
-
-#endif
diff --git a/Objects/object.c b/Objects/object.c
index e8ac8a2..90cdc74 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1536,10 +1536,9 @@
 	if (PyType_Ready(&PyStaticMethod_Type) < 0)
 		Py_FatalError("Can't initialize static method type");
 
-#ifndef WITHOUT_COMPLEX
 	if (PyType_Ready(&PyComplex_Type) < 0)
 		Py_FatalError("Can't initialize complex type");
-#endif
+
 	if (PyType_Ready(&PyFloat_Type) < 0)
 		Py_FatalError("Can't initialize float type");
 
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index cc142a7..daf18dc 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -1383,10 +1383,8 @@
 			c = tok_nextc(tok);
 			if (c == '.')
 				goto fraction;
-#ifndef WITHOUT_COMPLEX
 			if (c == 'j' || c == 'J')
 				goto imaginary;
-#endif
 			if (c == 'x' || c == 'X') {
 
 				/* Hex */
@@ -1438,10 +1436,8 @@
 					goto fraction;
 				else if (c == 'e' || c == 'E')
 					goto exponent;
-#ifndef WITHOUT_COMPLEX
 				else if (c == 'j' || c == 'J')
 					goto imaginary;
-#endif
 				else if (nonzero) {
 					tok->done = E_TOKEN;
 					tok_backup(tok, c);
@@ -1478,12 +1474,10 @@
 						c = tok_nextc(tok);
 					} while (isdigit(c));
 				}
-#ifndef WITHOUT_COMPLEX
 				if (c == 'j' || c == 'J')
 					/* Imaginary part */
 		imaginary:
 					c = tok_nextc(tok);
-#endif
 			}
 		}
 		tok_backup(tok, c);
diff --git a/Python/ast.c b/Python/ast.c
index 8a35a12..c3edea3 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -3177,17 +3177,13 @@
     const char *end;
     long x;
     double dx;
-#ifndef WITHOUT_COMPLEX
     Py_complex compl;
     int imflag;
-#endif
 
     assert(s != NULL);
     errno = 0;
     end = s + strlen(s) - 1;
-#ifndef WITHOUT_COMPLEX
     imflag = *end == 'j' || *end == 'J';
-#endif
     if (s[0] == '0') {
         x = (long) PyOS_strtoul((char *)s, (char **)&end, 0);
         if (x < 0 && errno == 0) {
@@ -3204,7 +3200,6 @@
         return PyLong_FromLong(x);
     }
     /* XXX Huge floats may silently fail */
-#ifndef WITHOUT_COMPLEX
     if (imflag) {
         compl.real = 0.;
         compl.imag = PyOS_string_to_double(s, (char **)&end, NULL);
@@ -3213,7 +3208,6 @@
         return PyComplex_FromCComplex(compl);
     }
     else
-#endif
     {
         dx = PyOS_string_to_double(s, NULL, NULL);
         if (dx == -1.0 && PyErr_Occurred())
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 2224d37..ab6049c 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -2302,9 +2302,7 @@
 	SETBUILTIN("bytearray",		&PyByteArray_Type);
 	SETBUILTIN("bytes",		&PyBytes_Type);
 	SETBUILTIN("classmethod",	&PyClassMethod_Type);
-#ifndef WITHOUT_COMPLEX
 	SETBUILTIN("complex",		&PyComplex_Type);
-#endif
 	SETBUILTIN("dict",		&PyDict_Type);
  	SETBUILTIN("enumerate",		&PyEnum_Type);
  	SETBUILTIN("filter",		&PyFilter_Type);
diff --git a/Python/getargs.c b/Python/getargs.c
index 486cf7d..f41cd05 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -818,7 +818,6 @@
 		break;
 	}
 
-#ifndef WITHOUT_COMPLEX
 	case 'D': {/* complex double */
 		Py_complex *p = va_arg(*p_va, Py_complex *);
 		Py_complex cval;
@@ -829,7 +828,6 @@
 			*p = cval;
 		break;
 	}
-#endif /* WITHOUT_COMPLEX */
 
 	case 'c': {/* char */
 		char *p = va_arg(*p_va, char *);
@@ -1772,9 +1770,7 @@
 #endif
 	case 'f': /* float */
 	case 'd': /* double */
-#ifndef WITHOUT_COMPLEX
 	case 'D': /* complex double */
-#endif
 	case 'c': /* char */
 		{
 			(void) va_arg(*p_va, void *);
diff --git a/Python/marshal.c b/Python/marshal.c
index 256285b..3391085 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -254,7 +254,6 @@
 			PyMem_Free(buf);
 		}
 	}
-#ifndef WITHOUT_COMPLEX
 	else if (PyComplex_CheckExact(v)) {
 		if (p->version > 1) {
 			unsigned char buf[8];
@@ -297,7 +296,6 @@
 			PyMem_Free(buf);
 		}
 	}
-#endif
 	else if (PyBytes_CheckExact(v)) {
 		w_byte(TYPE_STRING, p);
 		n = PyBytes_GET_SIZE(v);
@@ -714,7 +712,6 @@
 			break;
 		}
 
-#ifndef WITHOUT_COMPLEX
 	case TYPE_COMPLEX:
 		{
 			char buf[256];
@@ -773,7 +770,6 @@
 			retval = PyComplex_FromCComplex(c);
 			break;
 		}
-#endif
 
 	case TYPE_STRING:
 		n = r_long(p);
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 0cbc6f7..0f31634 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -279,11 +279,9 @@
 			return PyFloat_FromDouble(
 				(double)va_arg(*p_va, va_double));
 
-#ifndef WITHOUT_COMPLEX
 		case 'D':
 			return PyComplex_FromCComplex(
 				*((Py_complex *)va_arg(*p_va, Py_complex *)));
-#endif /* WITHOUT_COMPLEX */
 
 		case 'c':
 		{
