Skip to content

Commit a4c44ed

Browse files
committed
Merge pull request #20 from minrk/kernelspec
allow specifying the name of the IPython kernel
2 parents 097bc45 + 65a9687 commit a4c44ed

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

ipykernel/kernelspec.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def write_kernel_spec(path=None):
7474
return path
7575

7676

77-
def install(kernel_spec_manager=None, user=False):
77+
def install(kernel_spec_manager=None, user=False, kernel_name=None):
7878
"""Install the IPython kernelspec for Jupyter
7979
8080
Parameters
@@ -85,20 +85,37 @@ def install(kernel_spec_manager=None, user=False):
8585
If none provided, a default instance will be created.
8686
user: bool [default: False]
8787
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.
8896
"""
8997
if kernel_spec_manager is None:
9098
kernel_spec_manager = KernelSpecManager()
99+
if kernel_name is None:
100+
kernel_name = KERNEL_NAME
91101
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)
94104
# cleanup afterward
95105
shutil.rmtree(path)
106+
return dest
96107

97108

98109
if __name__ == '__main__':
99110
import argparse
100-
parser = argparse.ArgumentParser()
111+
parser = argparse.ArgumentParser(
112+
description="Install the IPython kernel spec.")
101113
parser.add_argument('--user', action='store_true',
102114
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.")
103118
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

Comments
 (0)