##// END OF EJS Templates
Add '-m mod : run library module as a script' option....
Bradley M. Froehle -
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,7 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 self.shell.safe_run_module(self.module_to_run, self.shell.user_ns)
General Comments 0
You need to be logged in to leave comments. Login now