diff --git a/IPython/html/__main__.py b/IPython/html/__main__.py
new file mode 100644
index 0000000..1898a90
--- /dev/null
+++ b/IPython/html/__main__.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.html import notebookapp as app
+ app.launch_new_instance()
diff --git a/IPython/kernel/__main__.py b/IPython/kernel/__main__.py
new file mode 100644
index 0000000..aba3866
--- /dev/null
+++ b/IPython/kernel/__main__.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.kernel.zmq import kernelapp as app
+ app.launch_new_instance()
diff --git a/IPython/parallel/apps/launcher.py b/IPython/parallel/apps/launcher.py
index 17b3fea..7b3f1ae 100644
--- a/IPython/parallel/apps/launcher.py
+++ b/IPython/parallel/apps/launcher.py
@@ -76,13 +76,11 @@ WINDOWS = os.name == 'nt'
# Paths to the kernel apps
#-----------------------------------------------------------------------------
-cmd = "from IPython.parallel.apps.%s import launch_new_instance; launch_new_instance()"
+ipcluster_cmd_argv = [sys.executable, "-m", "IPython.parallel.cluster"]
-ipcluster_cmd_argv = [sys.executable, "-c", cmd % "ipclusterapp"]
+ipengine_cmd_argv = [sys.executable, "-m", "IPython.parallel.engine"]
-ipengine_cmd_argv = [sys.executable, "-c", cmd % "ipengineapp"]
-
-ipcontroller_cmd_argv = [sys.executable, "-c", cmd % "ipcontrollerapp"]
+ipcontroller_cmd_argv = [sys.executable, "-m", "IPython.parallel.controller"]
#-----------------------------------------------------------------------------
# Base launchers and errors
diff --git a/IPython/parallel/cluster.py b/IPython/parallel/cluster.py
new file mode 100644
index 0000000..9f947fb
--- /dev/null
+++ b/IPython/parallel/cluster.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.parallel.apps import ipclusterapp as app
+ app.launch_new_instance()
diff --git a/IPython/parallel/controller/__main__.py b/IPython/parallel/controller/__main__.py
new file mode 100644
index 0000000..607cae3
--- /dev/null
+++ b/IPython/parallel/controller/__main__.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.parallel.apps import ipcontrollerapp as app
+ app.launch_new_instance()
diff --git a/IPython/parallel/engine/__main__.py b/IPython/parallel/engine/__main__.py
new file mode 100644
index 0000000..76bf423
--- /dev/null
+++ b/IPython/parallel/engine/__main__.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.parallel.apps import ipengineapp as app
+ app.launch_new_instance()
diff --git a/IPython/parallel/logger.py b/IPython/parallel/logger.py
new file mode 100644
index 0000000..274bea0
--- /dev/null
+++ b/IPython/parallel/logger.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.parallel.apps import iploggerapp as app
+ app.launch_new_instance()
diff --git a/IPython/qt/console/__main__.py b/IPython/qt/console/__main__.py
new file mode 100644
index 0000000..257ab35
--- /dev/null
+++ b/IPython/qt/console/__main__.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.qt.console import qtconsoleapp as app
+ app.launch_new_instance()
diff --git a/IPython/terminal/console/__main__.py b/IPython/terminal/console/__main__.py
new file mode 100644
index 0000000..c93a817
--- /dev/null
+++ b/IPython/terminal/console/__main__.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.terminal.console import app
+ app.launch_new_instance()
diff --git a/IPython/testing/__main__.py b/IPython/testing/__main__.py
new file mode 100644
index 0000000..4b0bb8b
--- /dev/null
+++ b/IPython/testing/__main__.py
@@ -0,0 +1,3 @@
+if __name__ == '__main__':
+ from IPython.testing import iptestcontroller
+ iptestcontroller.main()