@@ -74,7 +74,7 @@ def write_kernel_spec(path=None):
74
74
return path
75
75
76
76
77
- def install (kernel_spec_manager = None , user = False ):
77
+ def install (kernel_spec_manager = None , user = False , kernel_name = None ):
78
78
"""Install the IPython kernelspec for Jupyter
79
79
80
80
Parameters
@@ -85,20 +85,37 @@ def install(kernel_spec_manager=None, user=False):
85
85
If none provided, a default instance will be created.
86
86
user: bool [default: False]
87
87
Whether to do a user-only install, or system-wide.
88
+ kernel_name: str, optional
89
+ Specify a name for the kernelspec.
90
+ This is needed for having multiple IPython kernels for different environments.
91
+
92
+ Returns
93
+ -------
94
+
95
+ The path where the kernelspec was installed.
88
96
"""
89
97
if kernel_spec_manager is None :
90
98
kernel_spec_manager = KernelSpecManager ()
99
+ if kernel_name is None :
100
+ kernel_name = KERNEL_NAME
91
101
path = write_kernel_spec ()
92
- kernel_spec_manager .install_kernel_spec (path ,
93
- kernel_name = KERNEL_NAME , user = user , replace = True )
102
+ dest = kernel_spec_manager .install_kernel_spec (path ,
103
+ kernel_name = kernel_name , user = user )
94
104
# cleanup afterward
95
105
shutil .rmtree (path )
106
+ return dest
96
107
97
108
98
109
if __name__ == '__main__' :
99
110
import argparse
100
- parser = argparse .ArgumentParser ()
111
+ parser = argparse .ArgumentParser (
112
+ description = "Install the IPython kernel spec." )
101
113
parser .add_argument ('--user' , action = 'store_true' ,
102
114
help = "Install for the current user instead of system-wide" )
115
+ parser .add_argument ('--name' , type = str , default = KERNEL_NAME ,
116
+ help = "Specify a name for the kernelspec."
117
+ " This is needed to have multiple IPython kernels at the same time." )
103
118
opts = parser .parse_args ()
104
- install (user = opts .user )
119
+
120
+ dest = install (user = opts .user , kernel_name = opts .name )
121
+ print ("Installed kernelspec %s in %s" % (opts .name , dest ))
0 commit comments