Show More
@@ -26,6 +26,7 b' import codeop' | |||
|
26 | 26 | import inspect |
|
27 | 27 | import os |
|
28 | 28 | import re |
|
29 | import runpy | |
|
29 | 30 | import sys |
|
30 | 31 | import tempfile |
|
31 | 32 | import types |
@@ -2356,6 +2357,28 b' class InteractiveShell(SingletonConfigurable, Magic):' | |||
|
2356 | 2357 | self.showtraceback() |
|
2357 | 2358 | warn('Unknown failure executing file: <%s>' % fname) |
|
2358 | 2359 | |
|
2360 | def safe_run_module(self, mod_name, where): | |
|
2361 | """A safe version of runpy.run_module(). | |
|
2362 | ||
|
2363 | This version will never throw an exception, but instead print | |
|
2364 | helpful error messages to the screen. | |
|
2365 | ||
|
2366 | Parameters | |
|
2367 | ---------- | |
|
2368 | mod_name : string | |
|
2369 | The name of the module to be executed. | |
|
2370 | where : dict | |
|
2371 | The globals namespace. | |
|
2372 | """ | |
|
2373 | try: | |
|
2374 | where.update( | |
|
2375 | runpy.run_module(str(mod_name), run_name="__main__", | |
|
2376 | alter_sys=True) | |
|
2377 | ) | |
|
2378 | except: | |
|
2379 | self.showtraceback() | |
|
2380 | warn('Unknown failure executing module: <%s>' % mod_name) | |
|
2381 | ||
|
2359 | 2382 | def run_cell(self, raw_cell, store_history=False): |
|
2360 | 2383 | """Run a complete IPython cell. |
|
2361 | 2384 |
@@ -103,6 +103,7 b' shell_aliases = dict(' | |||
|
103 | 103 | logfile='InteractiveShell.logfile', |
|
104 | 104 | logappend='InteractiveShell.logappend', |
|
105 | 105 | c='InteractiveShellApp.code_to_run', |
|
106 | m='InteractiveShellApp.module_to_run', | |
|
106 | 107 | ext='InteractiveShellApp.extra_extension', |
|
107 | 108 | ) |
|
108 | 109 | shell_aliases['cache-size'] = 'InteractiveShell.cache_size' |
@@ -146,6 +147,9 b' class InteractiveShellApp(Configurable):' | |||
|
146 | 147 | code_to_run = Unicode('', config=True, |
|
147 | 148 | help="Execute the given command string." |
|
148 | 149 | ) |
|
150 | module_to_run = Unicode('', config=True, | |
|
151 | help="Run the module as a script." | |
|
152 | ) | |
|
149 | 153 | pylab_import_all = Bool(True, config=True, |
|
150 | 154 | help="""If true, an 'import *' is done from numpy and pylab, |
|
151 | 155 | when using pylab""" |
@@ -183,6 +187,7 b' class InteractiveShellApp(Configurable):' | |||
|
183 | 187 | self._run_exec_lines() |
|
184 | 188 | self._run_exec_files() |
|
185 | 189 | self._run_cmd_line_code() |
|
190 | self._run_module() | |
|
186 | 191 | |
|
187 | 192 | # flush output, so itwon't be attached to the first cell |
|
188 | 193 | sys.stdout.flush() |
@@ -294,3 +299,15 b' class InteractiveShellApp(Configurable):' | |||
|
294 | 299 | fname) |
|
295 | 300 | self.shell.showtraceback() |
|
296 | 301 | |
|
302 | def _run_module(self): | |
|
303 | """Run module specified at the command-line.""" | |
|
304 | if self.module_to_run: | |
|
305 | # Make sure that the module gets a proper sys.argv as if it were | |
|
306 | # run using `python -m`. | |
|
307 | save_argv = sys.argv | |
|
308 | sys.argv = [sys.executable] + self.extra_args | |
|
309 | try: | |
|
310 | self.shell.safe_run_module(self.module_to_run, | |
|
311 | self.shell.user_ns) | |
|
312 | finally: | |
|
313 | sys.argv = save_argv |
@@ -265,13 +265,16 b' class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):' | |||
|
265 | 265 | self.interact = True |
|
266 | 266 | |
|
267 | 267 | def _file_to_run_changed(self, name, old, new): |
|
268 | if new: | |
|
269 | self.something_to_run = True | |
|
268 | 270 | if new and not self.force_interact: |
|
269 | 271 | self.interact = False |
|
270 | 272 | _code_to_run_changed = _file_to_run_changed |
|
273 | _module_to_run_changed = _file_to_run_changed | |
|
271 | 274 | |
|
272 | 275 | # internal, not-configurable |
|
273 | 276 | interact=Bool(True) |
|
274 | ||
|
277 | something_to_run=Bool(False) | |
|
275 | 278 | |
|
276 | 279 | def parse_command_line(self, argv=None): |
|
277 | 280 | """override to allow old '-pylab' flag with deprecation warning""" |
@@ -306,7 +309,7 b' class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):' | |||
|
306 | 309 | if not self.ignore_old_config: |
|
307 | 310 | check_for_old_config(self.ipython_dir) |
|
308 | 311 | # print self.extra_args |
|
309 | if self.extra_args: | |
|
312 | if self.extra_args and not self.something_to_run: | |
|
310 | 313 | self.file_to_run = self.extra_args[0] |
|
311 | 314 | # create the shell |
|
312 | 315 | self.init_shell() |
General Comments 0
You need to be logged in to leave comments.
Login now