diff --git a/src/LyX.cpp b/src/LyX.cpp
index fc2f871101..d05ae8960b 100644
--- a/src/LyX.cpp
+++ b/src/LyX.cpp
@@ -581,10 +581,12 @@ void LyX::execCommands()
 {
 	// The advantage of doing this here is that the event loop
 	// is already started. So any need for interaction will be
-	// aknowledged.
+	// acknowledged.

 	// if reconfiguration is needed.
-	if (LayoutFileList::get().empty()) {
+	const bool noLayouts = LayoutFileList::get().empty();
+	const bool haspython = os::hasPython();
+	if (noLayouts && haspython) {
 		switch (Alert::prompt(
 			_("No textclass is found"),
 			_("LyX will only have minimal functionality because no textclasses "
@@ -593,7 +595,8 @@ void LyX::execCommands()
 			0, 2,
 			_("&Reconfigure"),
 			_("&Without LaTeX"),
-			_("&Continue")))
+			_("&Continue"),
+			_("&Exit LyX")))
 		{
 		case 0:
 			// regular reconfigure
@@ -604,6 +607,24 @@ void LyX::execCommands()
 			lyx::dispatch(FuncRequest(LFUN_RECONFIGURE,
 				" --without-latex-config"));
 			break;
+		case 3:
+			lyx::dispatch(FuncRequest(LFUN_LYX_QUIT, ""));
+			return;
+		default:
+			break;
+		}
+	} else if (noLayouts) {
+		switch (Alert::prompt(
+			_("No python is found"),
+			_("LyX will only have minimal functionality because no python interpreter "
+				"has been found."),
+			0, 1,
+			_("&Continue"),
+			_("&Exit LyX")))
+		{
+		case 1:
+			lyx::dispatch(FuncRequest(LFUN_LYX_QUIT, ""));
+			return;
 		default:
 			break;
 		}
diff --git a/src/support/Package.cpp b/src/support/Package.cpp
index 400bf15707..ffc1395efb 100644
--- a/src/support/Package.cpp
+++ b/src/support/Package.cpp
@@ -159,9 +159,9 @@ Package::Package(string const & command_line_arg0,

 int Package::reconfigureUserLyXDir(string const & option) const
 {
-	if (configure_command_.empty()) {
+	if (configure_command_.empty() || !os::hasPython()) {
 		FileName const configure_script(addName(system_support().absFileName(), "configure.py"));
-		configure_command_ = os::python() + ' ' +
+		configure_command_ = os::python(true) + ' ' +
 			quoteName(configure_script.toFilesystemEncoding()) +
 			with_version_suffix() + " --binary-dir=" +
 			quoteName(FileName(binary_dir().absFileName()).toFilesystemEncoding());
diff --git a/src/support/os.cpp b/src/support/os.cpp
index cafe4b1cb9..54a1799324 100644
--- a/src/support/os.cpp
+++ b/src/support/os.cpp
@@ -191,6 +191,12 @@ string const python(bool reset)
 	return command;
 }

+
+bool hasPython()
+{
+	return python23_call(python()).size() > 0;
+}
+
 } // namespace os
 } // namespace support
 } // namespace lyx
diff --git a/src/support/os.h b/src/support/os.h
index d89af7dca4..a96791dff4 100644
--- a/src/support/os.h
+++ b/src/support/os.h
@@ -62,6 +62,9 @@ int timeout_ms();
 /// @param reset True if the python path should be recomputed
 std::string const python(bool reset = false);

+/// Check for availbility of the python interpreter
+bool hasPython();
+
 ///
 bool isFilesystemCaseSensitive();

