如何在同一GitHub仓库的Jupyter Notebook间使用非绝对路径链接
失效原因
GitHub 渲染 Jupyter Notebook 时会将内容放到 notebooks.githubusercontent.com 子域名的 iframe 中加载,相对路径会基于这个子域名解析,和 README.md 直接在 github.com 域名下解析的逻辑完全不同,这就是你写的两种相对路径都会跳转失效的核心原因。
可行方案
方案1:无分支依赖、兼顾本地使用的写法
如果你希望链接同时支持本地环境跳转、且不受仓库分支变更影响,可以使用 Git 内置的 HEAD 指针代替固定分支名,HEAD 永远指向当前所在分支的最新提交,即使后续修改分支名、切换分支,链接都会自动匹配当前分支下的对应文件,不会失效,写法示例:
[跳转至Notebook2](/用户名/仓库名/blob/HEAD/目标文件路径.ipynb)
如果希望本地直接使用纯相对路径跳转,也可以同时保留两种链接,分别对应不同使用场景:
* 本地环境跳转:[跳转至Notebook2](notebook2.ipynb) * GitHub 网页端跳转:[跳转至Notebook2](/用户名/仓库名/blob/HEAD/目标文件路径.ipynb)
方案2:完全使用相对路径的解决方案
开启对应仓库的 GitHub Pages 服务,所有 Notebook 会直接在 Pages 对应的域名下渲染,相对路径会遵循普通静态页面的解析规则,和本地环境的跳转逻辑完全一致,不需要修改任何原有链接即可同时适配两个场景。
内容的提问来源于stack exchange,提问作者JeffHeaton
相关产品推荐
相关产品推荐

