pycharm 中启动 jupyter notebook 默认路径非项目根目录,最稳解法是配置外部工具并设置 --notebook-dir="$projectfiledir$" 与 working directory 为 $projectfiledir$,确保每次以当前项目目录启动。

PyCharm 中启动 Jupyter Notebook 时,默认路径不是你当前项目目录,而是系统用户主目录或配置文件里写的路径——这会导致新建 notebook 总跑到错地方,甚至找不到你刚写的 .py 文件。最稳的解法不是改全局配置,而是让 PyCharm 每次都用当前项目根目录启动 Jupyter。
PyCharm 终端里运行 jupyter notebook 为什么还是进错目录?
因为 PyCharm 的终端默认工作目录(os.getcwd())不等于你打开的项目路径——尤其当你从桌面快捷方式或 Anaconda Prompt 启动 PyCharm 时,终端初始路径可能是 C:\Users\YourName。Jupyter 只认启动瞬间的当前路径,不管你在 PyCharm 里打开了哪个项目。
- 检查当前终端路径:在 PyCharm 终端输入
pwd(macOS/Linux)或cd(Windows),看输出是不是你期望的项目根目录 - 手动切过去再启动:
cd /path/to/your/project && jupyter notebook,这才是即时生效的方案 - 别依赖“PyCharm 自动同步项目路径”——它不自动改终端工作目录,除非你手动设置过 Terminal 的 shell path
给 PyCharm 配置外部工具:绑定项目专属 Jupyter 启动项
这是真正实现“每个项目有自己的默认路径”的做法,绕过所有全局配置干扰。
- 进入
File → Settings → Tools → External Tools(macOS 是PyCharm → Preferences) - 点
+新建工具,填入:-
Name: 比如
Jupyter in Project Root -
Program: 填你环境中
jupyter的绝对路径,比如C:\Users\You\anaconda3\Scripts\jupyter.exe或/opt/anaconda3/bin/jupyter -
Arguments:
notebook --notebook-dir="$ProjectFileDir$" -
Working directory:
$ProjectFileDir$
-
Name: 比如
- 保存后,在任意项目里右键 →
External Tools → Jupyter in Project Root,就会以当前项目根目录为 notebook 根路径启动 - 注意:
--notebook-dir参数会锁死可写范围——新建、上传、保存都只能在该目录及子目录下,跨目录操作会报403 Forbidden
为什么改 jupyter_notebook_config.py 在 PyCharm 里经常失效?
PyCharm 启动 Jupyter 时,可能压根没读你改的那个配置文件——它优先用自己环境里的 jupyter 可执行文件路径去查配置,而这个路径和你 pip install 的位置、PyCharm 解释器选的环境未必一致。
- 先确认 PyCharm 用的是哪个 Python 环境:
File → Settings → Project → Python Interpreter,点齿轮 →Show All→ 查看 interpreter 路径 - 在这个环境里执行:
python -c "import jupyter_core; print(jupyter_core.paths.jupyter_config_dir())",得到真实配置目录 - 生成并编辑的是这个目录下的
jupyter_notebook_config.py,不是你用户目录下的.jupyter - 改完必须确保
c.NotebookApp.notebook_dir是绝对路径、末尾不带斜杠、路径存在且有读写权限,否则启动直接报OSError: [Errno 2]
真正容易被忽略的点是:PyCharm 的“Run Configuration”里如果设置了 Jupyter kernel,它可能跳过 notebook server 启动逻辑,直接连已运行的实例——这时候改任何配置都没用,得先关掉后台服务再试。











