Jupyter Notebook 强制使用 .ipynb 作为唯一可交互源文件后缀,无法修改为 .py 等其他格式;正确做法是通过 jupyter nbconvert 自动导出 .py 等格式,而非强行改后缀。

为什么不能直接把 .ipynb 改成 .py 保存?
因为 .ipynb 是 JSON 格式文件,包含 cell 类型(code/markdown)、执行状态、输出结果、元数据等;而 .py 只是纯 Python 脚本,两者结构完全不同。Jupyter 内核根本不识别非 .ipynb 后缀的 notebook 文件,强行改后缀会导致打不开、丢失输出、无法重新运行。
如何自动同步生成 .py 文件(推荐)
用 jupyter nbconvert 配合文件监视或启动脚本,在保存 .ipynb 时自动生成同名 .py:
- 手动触发:在终端进入 notebook 所在目录,运行
jupyter nbconvert --to python mynotebook.ipynb,会生成mynotebook.py - 保存即导出(需额外工具):安装
jupyter-autopep8或写一个简单的 pre-save hook(见下条),但注意——Jupyter 官方不提供“保存时自动导出”的内置开关 - 最稳做法:把导出命令加进开发流程,比如写个一键脚本
make py或 Git commit 前钩子
怎么让 File → Download as 出现更多后缀选项?
Download as 菜单只支持 Jupyter 官方支持的导出格式,比如 Python (.py)、HTML、Markdown、PDF 等。新增格式需安装对应 exporter:
- 要导出为
.md:默认支持,选Download as → Markdown (.md) - 要导出为
.html:同样默认支持 - 要导出为
.pdf:需先装pip install weasyprint或texlive(Linux/Mac)或 MiKTeX(Windows) - 自定义 exporter(如
.rst或.qmd):需继承nbconvert.exporters.Exporter类并注册,属于高级用法,日常几乎不用
容易被忽略的关键点
很多人试过直接编辑 jupyter_notebook_config.py 加 c.NotebookApp.files_extension = '.py' ——这行代码根本不存在,Jupyter 没这个配置项。所有试图绕过 .ipynb 主格式的“保存后缀修改”,最终都会卡在内核加载失败或前端报 Unreadable Notebook 错误上。真正的工程实践是:接受 .ipynb 为唯一可交互源文件,用 nbconvert 或 IDE 插件做单向导出。


















