Show More
@@ -12,6 +12,7 | |||
|
12 | 12 | #----------------------------------------------------------------------------- |
|
13 | 13 | |
|
14 | 14 | # Stdlib |
|
15 | import errno | |
|
15 | 16 | import os |
|
16 | 17 | import re |
|
17 | 18 | import sys |
@@ -30,7 +31,7 from IPython.core.magic import ( | |||
|
30 | 31 | from IPython.lib.backgroundjobs import BackgroundJobManager |
|
31 | 32 | from IPython.testing.skipdoctest import skip_doctest |
|
32 | 33 | from IPython.utils import py3compat |
|
33 |
from IPython.utils.process import |
|
|
34 | from IPython.utils.process import arg_split | |
|
34 | 35 | from IPython.utils.traitlets import List, Dict |
|
35 | 36 | |
|
36 | 37 | #----------------------------------------------------------------------------- |
@@ -90,36 +91,23 class ScriptMagics(Magics, Configurable): | |||
|
90 | 91 | """, |
|
91 | 92 | ) |
|
92 | 93 | def _script_magics_default(self): |
|
93 |
"""default to a common list of programs |
|
|
94 | """default to a common list of programs""" | |
|
94 | 95 | |
|
95 |
defaults = [ |
|
|
96 | to_try = [] | |
|
97 | if os.name == 'nt': | |
|
98 | defaults.append('cmd') | |
|
99 | to_try.append('powershell') | |
|
100 | to_try.extend([ | |
|
96 | defaults = [ | |
|
101 | 97 | 'sh', |
|
102 | 98 | 'bash', |
|
103 | 99 | 'perl', |
|
104 | 100 | 'ruby', |
|
101 | 'python', | |
|
105 | 102 | 'python3', |
|
106 | 103 | 'pypy', |
|
107 |
] |
|
|
104 | ] | |
|
105 | if os.name == 'nt': | |
|
106 | defaults.extend([ | |
|
107 | 'cmd', | |
|
108 | 'powershell', | |
|
109 | ]) | |
|
108 | 110 | |
|
109 | for cmd in to_try: | |
|
110 | if cmd in self.script_paths: | |
|
111 | defaults.append(cmd) | |
|
112 | else: | |
|
113 | try: | |
|
114 | find_cmd(cmd) | |
|
115 | except FindCmdError: | |
|
116 | # command not found, ignore it | |
|
117 | pass | |
|
118 | except ImportError: | |
|
119 | # Windows without pywin32, find_cmd doesn't work | |
|
120 | pass | |
|
121 | else: | |
|
122 | defaults.append(cmd) | |
|
123 | 111 | return defaults |
|
124 | 112 | |
|
125 | 113 | script_paths = Dict(config=True, |
@@ -197,8 +185,15 class ScriptMagics(Magics, Configurable): | |||
|
197 | 185 | """ |
|
198 | 186 | argv = arg_split(line, posix = not sys.platform.startswith('win')) |
|
199 | 187 | args, cmd = self.shebang.parser.parse_known_args(argv) |
|
200 | ||
|
201 | p = Popen(cmd, stdout=PIPE, stderr=PIPE, stdin=PIPE) | |
|
188 | ||
|
189 | try: | |
|
190 | p = Popen(cmd, stdout=PIPE, stderr=PIPE, stdin=PIPE) | |
|
191 | except OSError as e: | |
|
192 | if e.errno == errno.ENOENT: | |
|
193 | print "Couldn't find program: %r" % cmd[0] | |
|
194 | return | |
|
195 | else: | |
|
196 | raise | |
|
202 | 197 | |
|
203 | 198 | cell = cell.encode('utf8', 'replace') |
|
204 | 199 | if args.bg: |
General Comments 0
You need to be logged in to leave comments.
Login now