##// END OF EJS Templates
Add API function to install a kernelspec
Thomas Kluyver -
Show More
@@ -1,6 +1,7 b''
1 import io
1 import io
2 import json
2 import json
3 import os
3 import os
4 import shutil
4 import sys
5 import sys
5
6
6 pjoin = os.path.join
7 pjoin = os.path.join
@@ -130,6 +131,35 b' class KernelSpecManager(HasTraits):'
130 raise NoSuchKernel(kernel_name)
131 raise NoSuchKernel(kernel_name)
131 return KernelSpec.from_resource_dir(resource_dir)
132 return KernelSpec.from_resource_dir(resource_dir)
132
133
134 def install_kernel_spec(self, source_dir, kernel_name=None, system=False,
135 replace=False):
136 """Install a kernel spec by copying its directory.
137
138 If ``kernel_name`` is not given, the basename of ``source_dir`` will
139 be used.
140
141 If ``system`` is True, it will attempt to install into the systemwide
142 kernel registry. If the process does not have appropriate permissions,
143 an :exc:`OSError` will be raised.
144
145 If ``replace`` is True, this will replace an existing kernel of the same
146 name. Otherwise, if the destination already exists, an :exc:`OSError`
147 will be raised.
148 """
149 if not kernel_name:
150 kernel_name = os.path.basename(source_dir)
151 kernel_name = kernel_name.lower()
152
153 if system:
154 destination = os.path.join(SYSTEM_KERNEL_DIR, kernel_name)
155 else:
156 destination = os.path.join(self.user_kernel_dir, kernel_name)
157
158 if replace and os.path.isdir(destination):
159 shutil.rmtree(destination)
160
161 shutil.copytree(source_dir, destination)
162
133 def find_kernel_specs():
163 def find_kernel_specs():
134 """Returns a dict mapping kernel names to resource directories."""
164 """Returns a dict mapping kernel names to resource directories."""
135 return KernelSpecManager().find_kernel_specs()
165 return KernelSpecManager().find_kernel_specs()
@@ -139,4 +169,9 b' def get_kernel_spec(kernel_name):'
139
169
140 Raises KeyError if the given kernel name is not found.
170 Raises KeyError if the given kernel name is not found.
141 """
171 """
142 return KernelSpecManager().get_kernel_spec(kernel_name) No newline at end of file
172 return KernelSpecManager().get_kernel_spec(kernel_name)
173
174 def install_kernel_spec(source_dir, kernel_name=None, system=False):
175 return KernelSpecManager().install_kernel_spec(source_dir, kernel_name, system)
176
177 install_kernel_spec.__doc__ = KernelSpecManager.install_kernel_spec.__doc__
General Comments 0
You need to be logged in to leave comments. Login now