##// END OF EJS Templates
add IPython.start_kernel...
MinRK -
Show More
@@ -1,114 +1,147 b''
1 # encoding: utf-8
1 # encoding: utf-8
2 """
2 """
3 IPython: tools for interactive and parallel computing in Python.
3 IPython: tools for interactive and parallel computing in Python.
4
4
5 http://ipython.org
5 http://ipython.org
6 """
6 """
7 #-----------------------------------------------------------------------------
7 #-----------------------------------------------------------------------------
8 # Copyright (c) 2008-2011, IPython Development Team.
8 # Copyright (c) 2008-2011, IPython Development Team.
9 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
9 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
10 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
10 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
11 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
11 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
12 #
12 #
13 # Distributed under the terms of the Modified BSD License.
13 # Distributed under the terms of the Modified BSD License.
14 #
14 #
15 # The full license is in the file COPYING.txt, distributed with this software.
15 # The full license is in the file COPYING.txt, distributed with this software.
16 #-----------------------------------------------------------------------------
16 #-----------------------------------------------------------------------------
17
17
18 #-----------------------------------------------------------------------------
18 #-----------------------------------------------------------------------------
19 # Imports
19 # Imports
20 #-----------------------------------------------------------------------------
20 #-----------------------------------------------------------------------------
21 from __future__ import absolute_import
21 from __future__ import absolute_import
22
22
23 import os
23 import os
24 import sys
24 import sys
25
25
26 #-----------------------------------------------------------------------------
26 #-----------------------------------------------------------------------------
27 # Setup everything
27 # Setup everything
28 #-----------------------------------------------------------------------------
28 #-----------------------------------------------------------------------------
29
29
30 # Don't forget to also update setup.py when this changes!
30 # Don't forget to also update setup.py when this changes!
31 if sys.version[0:3] < '2.6':
31 if sys.version[0:3] < '2.6':
32 raise ImportError('Python Version 2.6 or above is required for IPython.')
32 raise ImportError('Python Version 2.6 or above is required for IPython.')
33
33
34 # Make it easy to import extensions - they are always directly on pythonpath.
34 # Make it easy to import extensions - they are always directly on pythonpath.
35 # Therefore, non-IPython modules can be added to extensions directory.
35 # Therefore, non-IPython modules can be added to extensions directory.
36 # This should probably be in ipapp.py.
36 # This should probably be in ipapp.py.
37 sys.path.append(os.path.join(os.path.dirname(__file__), "extensions"))
37 sys.path.append(os.path.join(os.path.dirname(__file__), "extensions"))
38
38
39 #-----------------------------------------------------------------------------
39 #-----------------------------------------------------------------------------
40 # Setup the top level names
40 # Setup the top level names
41 #-----------------------------------------------------------------------------
41 #-----------------------------------------------------------------------------
42
42
43 from .config.loader import Config
43 from .config.loader import Config
44 from .core.getipython import get_ipython
44 from .core.getipython import get_ipython
45 from .core import release
45 from .core import release
46 from .core.application import Application
46 from .core.application import Application
47 from .terminal.embed import embed
47 from .terminal.embed import embed
48
48
49 from .core.error import TryNext
49 from .core.error import TryNext
50 from .core.interactiveshell import InteractiveShell
50 from .core.interactiveshell import InteractiveShell
51 from .testing import test
51 from .testing import test
52 from .utils.sysinfo import sys_info
52 from .utils.sysinfo import sys_info
53 from .utils.frame import extract_module_locals
53 from .utils.frame import extract_module_locals
54
54
55 # Release data
55 # Release data
56 __author__ = '%s <%s>' % (release.author, release.author_email)
56 __author__ = '%s <%s>' % (release.author, release.author_email)
57 __license__ = release.license
57 __license__ = release.license
58 __version__ = release.version
58 __version__ = release.version
59 version_info = release.version_info
59 version_info = release.version_info
60
60
61 def embed_kernel(module=None, local_ns=None, **kwargs):
61 def embed_kernel(module=None, local_ns=None, **kwargs):
62 """Embed and start an IPython kernel in a given scope.
62 """Embed and start an IPython kernel in a given scope.
63
63
64 If you don't want the kernel to initialize the namespace
65 from the scope of the surrounding function,
66 and/or you want to load full IPython configuration,
67 you probably want `IPython.start_kernel()` instead.
68
69
64 Parameters
70 Parameters
65 ----------
71 ----------
66 module : ModuleType, optional
72 module : ModuleType, optional
67 The module to load into IPython globals (default: caller)
73 The module to load into IPython globals (default: caller)
68 local_ns : dict, optional
74 local_ns : dict, optional
69 The namespace to load into IPython user namespace (default: caller)
75 The namespace to load into IPython user namespace (default: caller)
70
76
71 kwargs : various, optional
77 kwargs : various, optional
72 Further keyword args are relayed to the IPKernelApp constructor,
78 Further keyword args are relayed to the IPKernelApp constructor,
73 allowing configuration of the Kernel. Will only have an effect
79 allowing configuration of the Kernel. Will only have an effect
74 on the first embed_kernel call for a given process.
80 on the first embed_kernel call for a given process.
75
81
76 """
82 """
77
83
78 (caller_module, caller_locals) = extract_module_locals(1)
84 (caller_module, caller_locals) = extract_module_locals(1)
79 if module is None:
85 if module is None:
80 module = caller_module
86 module = caller_module
81 if local_ns is None:
87 if local_ns is None:
82 local_ns = caller_locals
88 local_ns = caller_locals
83
89
84 # Only import .zmq when we really need it
90 # Only import .zmq when we really need it
85 from IPython.kernel.zmq.embed import embed_kernel as real_embed_kernel
91 from IPython.kernel.zmq.embed import embed_kernel as real_embed_kernel
86 real_embed_kernel(module=module, local_ns=local_ns, **kwargs)
92 real_embed_kernel(module=module, local_ns=local_ns, **kwargs)
87
93
88 def start_ipython(argv=None, **kwargs):
94 def start_ipython(argv=None, **kwargs):
89 """Launch a normal IPython instance (as opposed to embedded)
95 """Launch a normal IPython instance (as opposed to embedded)
90
96
91 `IPython.embed()` puts a shell in a particular calling scope,
97 `IPython.embed()` puts a shell in a particular calling scope,
92 such as a function or method for debugging purposes,
98 such as a function or method for debugging purposes,
93 which is often not desirable.
99 which is often not desirable.
94
100
95 `start_ipython()` does full, regular IPython initialization,
101 `start_ipython()` does full, regular IPython initialization,
96 including loading startup files, configuration, etc.
102 including loading startup files, configuration, etc.
97 much of which is skipped by `embed()`.
103 much of which is skipped by `embed()`.
98
104
99 This is a public API method, and will survive implementation changes.
105 This is a public API method, and will survive implementation changes.
100
106
101 Parameters
107 Parameters
102 ----------
108 ----------
103
109
104 argv : list or None, optional
110 argv : list or None, optional
105 If unspecified or None, IPython will parse command-line options from sys.argv.
111 If unspecified or None, IPython will parse command-line options from sys.argv.
106 To prevent any command-line parsing, pass an empty list: `argv=[]`.
112 To prevent any command-line parsing, pass an empty list: `argv=[]`.
107 user_ns : dict, optional
113 user_ns : dict, optional
108 specify this dictionary to initialize the IPython user namespace with particular values.
114 specify this dictionary to initialize the IPython user namespace with particular values.
109 kwargs : various, optional
115 kwargs : various, optional
110 Any other kwargs will be passed to the Application constructor,
116 Any other kwargs will be passed to the Application constructor,
111 such as `config`.
117 such as `config`.
112 """
118 """
113 from IPython.terminal.ipapp import launch_new_instance
119 from IPython.terminal.ipapp import launch_new_instance
114 return launch_new_instance(argv=argv, **kwargs)
120 return launch_new_instance(argv=argv, **kwargs)
121
122 def start_kernel(argv=None, **kwargs):
123 """Launch a normal IPython kernel instance (as opposed to embedded)
124
125 `IPython.embed_kernel()` puts a shell in a particular calling scope,
126 such as a function or method for debugging purposes,
127 which is often not desirable.
128
129 `start_kernel()` does full, regular IPython initialization,
130 including loading startup files, configuration, etc.
131 much of which is skipped by `embed()`.
132
133 Parameters
134 ----------
135
136 argv : list or None, optional
137 If unspecified or None, IPython will parse command-line options from sys.argv.
138 To prevent any command-line parsing, pass an empty list: `argv=[]`.
139 user_ns : dict, optional
140 specify this dictionary to initialize the IPython user namespace with particular values.
141 kwargs : various, optional
142 Any other kwargs will be passed to the Application constructor,
143 such as `config`.
144 """
145 from IPython.kernel.zmq.kernelapp import launch_new_instance
146 return launch_new_instance(argv=argv, **kwargs)
147 No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now