根本原因是PyCharm未找到jupyter可执行文件或当前解释器未安装jupyter包;需确认项目绑定独立虚拟环境、在对应解释器中安装jupyter(非jupyter-notebook)、并在Terminal中手动启动服务以确保端口可用和路径正确。

PyCharm 启动 Jupyter 服务失败,提示“无法连接”
根本原因通常是 PyCharm 没找到可用的 jupyter 可执行文件,或当前 Python 解释器里没装 jupyter 包。不是插件没开、也不是版本不兼容——2024 年后所有 PyCharm Pro 版本都原生支持 .ipynb,无需额外安装插件。
- 先确认解释器是否装了
jupyter:打开File > Settings > Project > Python Interpreter,搜jupyter,没看到就点+安装jupyter(不是jupyter-notebook,后者已过时) - 别用系统全局 Python 或 base conda 环境:每个 PyCharm 项目应绑定独立虚拟环境,且该环境必须含
jupyter - 如果装了还报错,检查终端里运行
jupyter --version是否成功;失败说明 PATH 没对上,PyCharm 的 Terminal 默认用项目解释器路径,但有时会 fallback 到系统 shell,此时需在Settings > Tools > Terminal中勾选Activate virtualenv
点击运行按钮后弹出 Token 输入框,填什么?
这不是让你手动输 token,而是 PyCharm 没自动拉起本地 Jupyter 服务,转而让你连一个已存在的服务——这说明它放弃了自动启动,直接进入“手动连接”模式。
- 别复制浏览器地址栏里的完整 URL(含
?token=xxx),只复制http://localhost:8888这段(端口可能不同)到 PyCharm 的 “Configure Jupyter Server” 对话框里 - 更稳妥的做法是:先在 PyCharm 底部
Terminal里手动执行jupyter notebook --no-browser --port=8888,等看到http://localhost:8888/日志后,再回 PyCharm 点运行按钮,它会自动识别并连接 - 如果端口被占,改用
--port=8889,同时确保 PyCharm 设置里 Server URL 也同步更新
运行单元格后输出乱码、绘图不显示、中文标签糊成方块
这是内核和前端渲染不一致导致的,不是编码设置问题,核心在于 Matplotlib 后端和字体配置没随内核生效。
- 在第一个代码单元加这三行,强制用 inline 后端:
%matplotlib inline import matplotlib matplotlib.use('Agg') # 避免 backend 冲突 plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans'] - 别依赖 PyCharm 自带的图像预览:复杂图表(如 Plotly、Bokeh)需用
%pip install plotly+import plotly.io as pio; pio.renderers.default = 'iframe' - PDF/SVG 输出失效?加上
plt.savefig('xxx.png', bbox_inches='tight')显式保存,再手动查看,比依赖内嵌渲染更可靠
为什么 .ipynb 里 import 自定义模块失败?
因为 Jupyter 内核默认工作目录 ≠ PyCharm 项目根目录,也不等于 .ipynb 文件所在目录——它取决于内核启动时的 cwd,而 PyCharm 启动的内核 cwd 是项目根目录,但如果你手动启了 jupyter notebook,cwd 就是你启动时所在的终端路径。
- 最稳写法:
import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent.resolve()))
(注意:在.ipynb中__file__不可用,得用Path().resolve()或硬编码相对路径) - 或者统一约定:所有
.ipynb放在项目根目录下,模块放在src/或lib/子目录,并在解释器中把该路径加进sys.path - 别信 PyCharm 左下角显示的 “Working directory”,那只是编辑器视图路径,不影响内核实际 cwd
真正卡住人的从来不是“怎么点运行”,而是内核路径、工作目录、字体后端、模块导入这几处隐性耦合。改完一处,常要同步调另外两处,否则表面能跑,一画图或一 import 就崩。


















