Show More
@@ -152,7 +152,11 b" def user_setup(ipythondir,rc_suffix,mode='install',interactive=True):" | |||||
152 | printf = lambda s : None |
|
152 | printf = lambda s : None | |
153 |
|
153 | |||
154 | # Install mode should be re-entrant: if the install dir already exists, |
|
154 | # Install mode should be re-entrant: if the install dir already exists, | |
155 | # bail out cleanly |
|
155 | # bail out cleanly. | |
|
156 | # XXX. This is too hasty to return. We need to check to make sure that | |||
|
157 | # all the expected config files and directories are actually there. We | |||
|
158 | # currently have a failure mode if someone deletes a needed config file | |||
|
159 | # but still has the ipythondir. | |||
156 | if mode == 'install' and os.path.isdir(ipythondir): |
|
160 | if mode == 'install' and os.path.isdir(ipythondir): | |
157 | return |
|
161 | return | |
158 |
|
162 |
@@ -54,22 +54,10 b' from IPython.kernel.fcutil import have_crypto' | |||||
54 | from IPython.kernel.twistedutil import gatherBoth, wait_for_file |
|
54 | from IPython.kernel.twistedutil import gatherBoth, wait_for_file | |
55 | from IPython.kernel.util import printer |
|
55 | from IPython.kernel.util import printer | |
56 |
|
56 | |||
57 |
|
||||
58 | #----------------------------------------------------------------------------- |
|
57 | #----------------------------------------------------------------------------- | |
59 | # General process handling code |
|
58 | # General process handling code | |
60 | #----------------------------------------------------------------------------- |
|
59 | #----------------------------------------------------------------------------- | |
61 |
|
60 | |||
62 | def find_exe(cmd): |
|
|||
63 | try: |
|
|||
64 | import win32api |
|
|||
65 | except ImportError: |
|
|||
66 | raise ImportError('you need to have pywin32 installed for this to work') |
|
|||
67 | else: |
|
|||
68 | try: |
|
|||
69 | (path, offest) = win32api.SearchPath(os.environ['PATH'],cmd + '.exe') |
|
|||
70 | except: |
|
|||
71 | (path, offset) = win32api.SearchPath(os.environ['PATH'],cmd + '.bat') |
|
|||
72 | return path |
|
|||
73 |
|
61 | |||
74 | class ProcessStateError(Exception): |
|
62 | class ProcessStateError(Exception): | |
75 | pass |
|
63 | pass |
@@ -61,6 +61,33 b' def set_term_title(title):' | |||||
61 | _platutils.set_term_title(title) |
|
61 | _platutils.set_term_title(title) | |
62 |
|
62 | |||
63 |
|
63 | |||
|
64 | class FindCmdError(Exception): | |||
|
65 | pass | |||
|
66 | ||||
|
67 | def find_cmd(cmd): | |||
|
68 | """Find full path to executable cmd in a cross platform manner. | |||
|
69 | ||||
|
70 | This function tries to determine the full path to a command line program | |||
|
71 | using `which` on Unix/Linux/OS X and `win32api` on Windows. Most of the | |||
|
72 | time it will use the version that is first on the users `PATH`. If | |||
|
73 | cmd is `python` return `sys.executable`. | |||
|
74 | ||||
|
75 | Parameters | |||
|
76 | ---------- | |||
|
77 | cmd : str | |||
|
78 | The command line program to look for. | |||
|
79 | """ | |||
|
80 | if cmd == 'python': | |||
|
81 | return sys.executable | |||
|
82 | try: | |||
|
83 | path = _platutils.find_cmd(cmd) | |||
|
84 | except: | |||
|
85 | raise FindCmdError('command could not be found: %s' % cmd) | |||
|
86 | # which returns empty if not found | |||
|
87 | if path == '': | |||
|
88 | raise FindCmdError('command could not be found: %s' % cmd) | |||
|
89 | return path | |||
|
90 | ||||
64 | #----------------------------------------------------------------------------- |
|
91 | #----------------------------------------------------------------------------- | |
65 | # Deprecated functions |
|
92 | # Deprecated functions | |
66 | #----------------------------------------------------------------------------- |
|
93 | #----------------------------------------------------------------------------- |
@@ -23,3 +23,7 b' ignore_termtitle = True' | |||||
23 | def set_term_title(*args,**kw): |
|
23 | def set_term_title(*args,**kw): | |
24 | """Dummy no-op.""" |
|
24 | """Dummy no-op.""" | |
25 | pass |
|
25 | pass | |
|
26 | ||||
|
27 | def find_cmd(cmd): | |||
|
28 | """Find the full path to a command using which.""" | |||
|
29 | return os.popen('which %s' % cmd).read().strip() |
@@ -30,3 +30,7 b" if os.environ.get('TERM','') == 'xterm':" | |||||
30 | set_term_title = _set_term_title_xterm |
|
30 | set_term_title = _set_term_title_xterm | |
31 | else: |
|
31 | else: | |
32 | set_term_title = _dummy_op |
|
32 | set_term_title = _dummy_op | |
|
33 | ||||
|
34 | def find_cmd(cmd): | |||
|
35 | """Find the full path to a command using which.""" | |||
|
36 | return os.popen('which %s' % cmd).read().strip() |
@@ -41,3 +41,16 b' except ImportError:' | |||||
41 | if ret: |
|
41 | if ret: | |
42 | # non-zero return code signals error, don't try again |
|
42 | # non-zero return code signals error, don't try again | |
43 | ignore_termtitle = True |
|
43 | ignore_termtitle = True | |
|
44 | ||||
|
45 | def find_cmd(cmd): | |||
|
46 | """Find the full path to a .bat or .exe using the win32api module.""" | |||
|
47 | try: | |||
|
48 | import win32api | |||
|
49 | except ImportError: | |||
|
50 | raise ImportError('you need to have pywin32 installed for this to work') | |||
|
51 | else: | |||
|
52 | try: | |||
|
53 | (path, offest) = win32api.SearchPath(os.environ['PATH'],cmd + '.exe') | |||
|
54 | except: | |||
|
55 | (path, offset) = win32api.SearchPath(os.environ['PATH'],cmd + '.bat') | |||
|
56 | return path |
General Comments 0
You need to be logged in to leave comments.
Login now