最稳妥的解法是将 c.notebookapp.port 设为纯数字并写入 jupyter_notebook_config.py,确保无命令行 --port 参数覆盖、ip 绑定正确(如需远程则设为 '0.0.0.0')、端口未被系统占用或防火墙拦截。

直接改 jupyter_notebook_config.py 里的 c.NotebookApp.port
端口被占时,最稳妥的解法不是每次手动换端口启动,而是固定写进配置文件。只要配置存在且生效,jupyter notebook 就会始终用你指定的端口,不再抢 8888。
- 先确保配置文件已生成:
jupyter notebook --generate-config(没运行过就执行一次,会在~/.jupyter/下创建jupyter_notebook_config.py) - 用文本编辑器打开该文件,搜索
c.NotebookApp.port,取消注释(删掉行首的#),改成你想要的端口,比如:c.NotebookApp.port = 8989 - 注意:不要写成字符串,必须是纯数字;也不要用引号包裹
- 保存后重启 Jupyter,新端口立即生效 —— 不需要加
--port参数
为什么改了配置还是启动在 8888?
常见原因是命令行参数优先级高于配置文件。如果你启动时用了 jupyter notebook --port=8888,哪怕配置里写了 8989,它也照旧用 8888。
- 检查是否在快捷方式、IDE(如 PyCharm)或脚本中硬编码了
--port参数 - PyCharm 中 Jupyter 设置里可能单独指定了端口,要进
Settings → Tools → Python Console → Jupyter里清空或改掉 - Windows 下如果用 Anaconda Prompt 启动,确认没在 alias 或 bat 脚本里固化了端口参数
启动时临时换端口比改配置更快?
适合调试或单次使用,但不适合长期依赖。命令行覆盖配置是明确行为,不是 bug。
- 直接指定:
jupyter notebook --port=9999 - 禁用浏览器自动打开(避免干扰):
jupyter notebook --port=9999 --no-browser - 指定工作目录同时换端口:
jupyter notebook --port=9999 --notebook-dir=/path/to/notebooks - 注意:
--port必须写在jupyter notebook后面,不能颠倒顺序,否则报错
改端口后访问不了?重点查这三处
尤其在远程或公司网络环境下,光改配置不够,还可能卡在防火墙、绑定地址或权限上。
-
c.NotebookApp.ip默认是'localhost',只允许本机访问;远程访问必须设为'0.0.0.0'或'*'(后者需搭配c.NotebookApp.allow_remote_access = True) - Windows 上 Hyper-V 或 WSL2 可能占用高权限端口范围,若提示
Permission to listen on port XXXX denied,试试换到 8000–9000 区间(如 8899、8900) - Linux/macOS 需确认非 root 用户能否绑定低端口(











