Show More
@@ -193,6 +193,15 b' class ProfileCreate(BaseIPythonApplication):' | |||
|
193 | 193 | pass |
|
194 | 194 | else: |
|
195 | 195 | apps.append(IPythonQtConsoleApp) |
|
196 | try: | |
|
197 | from IPython.frontend.html.notebook.notebookapp import IPythonNotebookApp | |
|
198 | except Exception: | |
|
199 | # this should be ImportError, but under weird circumstances | |
|
200 | # this might be an AttributeError, or possibly others | |
|
201 | # in any case, nothing should cause the profile creation to crash. | |
|
202 | pass | |
|
203 | else: | |
|
204 | apps.append(IPythonNotebookApp) | |
|
196 | 205 | if self.parallel: |
|
197 | 206 | from IPython.parallel.apps.ipcontrollerapp import IPControllerApp |
|
198 | 207 | from IPython.parallel.apps.ipengineapp import IPEngineApp |
@@ -38,7 +38,6 b' from .notebookmanager import NotebookManager' | |||
|
38 | 38 | |
|
39 | 39 | from IPython.core.application import BaseIPythonApplication |
|
40 | 40 | from IPython.core.profiledir import ProfileDir |
|
41 | from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget | |
|
42 | 41 | from IPython.zmq.session import Session |
|
43 | 42 | from IPython.zmq.zmqshell import ZMQInteractiveShell |
|
44 | 43 | from IPython.zmq.ipkernel import ( |
@@ -58,6 +57,14 b' _notebook_id_regex = r"(?P<notebook_id>\\w+-\\w+-\\w+-\\w+-\\w+)"' | |||
|
58 | 57 | |
|
59 | 58 | LOCALHOST = '127.0.0.1' |
|
60 | 59 | |
|
60 | _examples = """ | |
|
61 | ipython notebook # start the notebook | |
|
62 | ipython notebook --profile=sympy # use the sympy profile | |
|
63 | ipython notebook --pylab=inline # pylab in inline plotting mode | |
|
64 | ipython notebook --certfile=mycert.pem # use SSL/TLS certificate | |
|
65 | ipython notebook --port=5555 --ip=* # Listen on port 5555, all interfaces | |
|
66 | """ | |
|
67 | ||
|
61 | 68 | #----------------------------------------------------------------------------- |
|
62 | 69 | # The Tornado web application |
|
63 | 70 | #----------------------------------------------------------------------------- |
@@ -102,17 +109,21 b' notebook_flags = []' | |||
|
102 | 109 | |
|
103 | 110 | aliases = dict(ipkernel_aliases) |
|
104 | 111 | |
|
105 |
aliases.update( |
|
|
106 |
ip |
|
|
107 |
port |
|
|
108 | colors = 'ZMQInteractiveShell.colors', | |
|
109 | )) | |
|
112 | aliases.update({ | |
|
113 | 'ip': 'IPythonNotebookApp.ip', | |
|
114 | 'port': 'IPythonNotebookApp.port', | |
|
115 | 'keyfile': 'IPythonNotebookApp.keyfile', | |
|
116 | 'certfile': 'IPythonNotebookApp.certfile', | |
|
117 | 'colors': 'ZMQInteractiveShell.colors', | |
|
118 | 'notebook-dir': 'NotebookManager.notebook_dir' | |
|
119 | }) | |
|
110 | 120 | |
|
111 | 121 | #----------------------------------------------------------------------------- |
|
112 | 122 | # IPythonNotebookApp |
|
113 | 123 | #----------------------------------------------------------------------------- |
|
114 | 124 | |
|
115 | 125 | class IPythonNotebookApp(BaseIPythonApplication): |
|
126 | ||
|
116 | 127 | name = 'ipython-notebook' |
|
117 | 128 | default_config_file_name='ipython_notebook_config.py' |
|
118 | 129 | |
@@ -122,6 +133,7 b' class IPythonNotebookApp(BaseIPythonApplication):' | |||
|
122 | 133 | This launches a Tornado based HTML Notebook Server that serves up an |
|
123 | 134 | HTML5/Javascript Notebook client. |
|
124 | 135 | """ |
|
136 | examples = _examples | |
|
125 | 137 | |
|
126 | 138 | classes = [IPKernelApp, ZMQInteractiveShell, ProfileDir, Session, |
|
127 | 139 | RoutingKernelManager, NotebookManager, |
@@ -136,17 +148,26 b' class IPythonNotebookApp(BaseIPythonApplication):' | |||
|
136 | 148 | config=True, |
|
137 | 149 | help="Set the log level by value or name.") |
|
138 | 150 | |
|
139 | # connection info: | |
|
151 | # Network related information. | |
|
152 | ||
|
140 | 153 | ip = Unicode(LOCALHOST, config=True, |
|
141 | 154 | help="The IP address the notebook server will listen on." |
|
142 | 155 | ) |
|
143 | 156 | |
|
157 | def _ip_changed(self, name, old, new): | |
|
158 | if new == u'*': self.ip = u'' | |
|
159 | ||
|
144 | 160 | port = Int(8888, config=True, |
|
145 | 161 | help="The port the notebook server will listen on." |
|
146 | 162 | ) |
|
147 | 163 | |
|
148 | # the factory for creating a widget | |
|
149 | widget_factory = Any(RichIPythonWidget) | |
|
164 | certfile = Unicode(u'', config=True, | |
|
165 | help="""The full path to an SSL/TLS certificate file.""" | |
|
166 | ) | |
|
167 | ||
|
168 | keyfile = Unicode(u'', config=True, | |
|
169 | help="""The full path to a private key file for usage with SSL/TLS.""" | |
|
170 | ) | |
|
150 | 171 | |
|
151 | 172 | def parse_command_line(self, argv=None): |
|
152 | 173 | super(IPythonNotebookApp, self).parse_command_line(argv) |
@@ -185,11 +206,22 b' class IPythonNotebookApp(BaseIPythonApplication):' | |||
|
185 | 206 | self.web_app = NotebookWebApplication( |
|
186 | 207 | self.routing_kernel_manager, self.notebook_manager, self.log |
|
187 | 208 | ) |
|
188 | self.http_server = httpserver.HTTPServer(self.web_app) | |
|
189 | self.http_server.listen(self.port) | |
|
209 | if self.certfile: | |
|
210 | ssl_options = dict(certfile=self.certfile) | |
|
211 | if self.keyfile: | |
|
212 | ssl_options['keyfile'] = self.keyfile | |
|
213 | else: | |
|
214 | ssl_options = None | |
|
215 | self.http_server = httpserver.HTTPServer(self.web_app, ssl_options=ssl_options) | |
|
216 | if ssl_options is None and not self.ip: | |
|
217 | self.log.critical('WARNING: the notebook server is listening on all IP addresses ' | |
|
218 | 'but not using any encryption or authentication. This is highly ' | |
|
219 | 'insecure and not recommended.') | |
|
220 | self.http_server.listen(self.port, self.ip) | |
|
190 | 221 | |
|
191 | 222 | def start(self): |
|
192 | self.log.info("The IPython Notebook is running at: http://%s:%i" % (self.ip, self.port)) | |
|
223 | ip = self.ip if self.ip else '[all ip addresses on your system]' | |
|
224 | self.log.info("The IPython Notebook is running at: http://%s:%i" % (ip, self.port)) | |
|
193 | 225 | ioloop.IOLoop.instance().start() |
|
194 | 226 | |
|
195 | 227 | #----------------------------------------------------------------------------- |
General Comments 0
You need to be logged in to leave comments.
Login now