正如我之前尝试的那样,我能够通过托管我的文件以作为静态内容下载来使其工作。所有这些都适用于 Mac,但对于其他平台来说也是类似的。
我必须定义一个自定义模板才能获取文件,static_root
以便为它们提供服务。此处提供了用于设置自定义模板的相关文档。
这并不难..您实际上是在预期的位置创建一个目录,复制一些默认文件,然后添加/更改您将要的内容。终端记录可能如下所示:
cd ~/Library/Jupyter/voila/templates/
mkdir foobar
export DEFAULT_TEMPLATE_PATH=~/anaconda3/envs/voilatest/share/jupyter/voila/templates/default
export TEMPLATE_PATH=~/Library/Jupyter/voila/templates/foobar
cp -r $DEFAULT_TEMPLATE_PATH/nbconvert_templates $TEMPLATE_PATH
cp -r $DEFAULT_TEMPLATE_PATH/templates $TEMPLATE_PATH
在我的新自定义模板中,树将如下所示:
{~/Library/Jupyter/voila/templates/foobar}$ tree .
.
├── nbconvert_templates
│ ├── base.tpl
│ ├── lab.tpl
│ └── voila.tpl
├── static
│ └── demo.xlsx
└── templates
├── 404.html
├── browser-open.html
├── error.html
├── page.html
└── tree.html
3 directories, 9 files
注意static
带有demo.xlsx
. 我把它加进去了。那是我想通过链接下载的文件。
像这样开始瞧...
voila mynotebook.ipynb --template=foobar
现在.. 在mynotebook.ipynb
使用 HTML Anchor 标记进行下载。至少FileLink
对我来说失败并出现以下错误。
路径 (/voila/static/demo.xlsx) 不存在。它可能仍在生成过程中,或者您的路径可能不正确。
这并不奇怪,因为文件存储的实际路径不是那个。它恰好是静态内容 uri。
%%html
<a href="./voila/static/demo.xlsx" download="demo.xlsx">Download Excel Sheet</a>
使用锚将使其硬编码,我没有任何问题。无论如何,我也可以为锚定更多样式。一个问题.. 这在常规笔记本中不再适用,因为它是瞧瞧下服务资源的 URI。