如何用自定义端口启动Jupyter Kernel?指定端口不生效求助
问题描述
我尝试通过以下命令启动Jupyter Kernel:
jupyter-kernel \ --ip=0.0.0.0 \ --KernelManager.control_port=56406 \ --KernelManager.hb_port=56407 \ --KernelManager.iopub_port=56408 \ --KernelManager.shell_port=56409 \ --KernelManager.stdin_port=56410
启动成功后输出如下:
[KernelApp] Starting kernel 'python3' [KernelApp] Connection file: /Users/jkitchin/Library/Jupyter/runtime/kernel-892382b5-8115-44ba-95cd-d8172ba848ac.json
但查看生成的连接文件时,发现其中的端口与我指定的不一致:
cat /Users/jkitchin/Library/Jupyter/runtime/kernel-892382b5-8115-44ba-95cd-d8172ba848ac.json
{ "shell_port": 55505, "iopub_port": 55506, "stdin_port": 55507, "control_port": 55509, "hb_port": 55508, "ip": "0.0.0.0", "key": "0a163fda-2b4963c994abc4277bdf58fa", "transport": "tcp", "signature_scheme": "hmac-sha256", "kernel_name": "" }
如何配置才能让指定的自定义端口生效?
解决方案
问题出在参数使用错误:jupyter-kernel命令对应的是KernelApp自身的配置,而非KernelManager的参数。KernelManager是用于管理kernel的上层组件,直接启动kernel进程时,需要使用KernelApp的端口参数。
临时生效:修改启动命令
把--KernelManager.*_port前缀去掉,直接使用--*_port参数,修改后的命令如下:
jupyter-kernel \ --ip=0.0.0.0 \ --control_port=56406 \ --hb_port=56407 \ --iopub_port=56408 \ --shell_port=56409 \ --stdin_port=56410
重新执行该命令,连接文件里的端口就会和你指定的一致。
持久化生效:配置文件设置
如果需要每次启动都自动应用这些端口,可以在Jupyter配置目录下创建/修改kernel_config.py文件,添加以下内容:
c.KernelApp.control_port = 56406 c.KernelApp.hb_port = 56407 c.KernelApp.iopub_port = 56408 c.KernelApp.shell_port = 56409 c.KernelApp.stdin_port = 56410 c.KernelApp.ip = '0.0.0.0'
配置文件默认路径为~/.jupyter/kernel_config.py,如果不存在,可通过jupyter kernel --generate-config命令生成。
内容的提问来源于stack exchange,提问作者John Kitchin
相关产品推荐
相关产品推荐

