从Jupyter Notebook在Voila中下载文件

尼克·布雷迪

关于从Jupyter Notebook下载文件的问题很多,答案很好。这是我之前添加的内容。可以,但是我无法单击并下载该文件以Voila开头的服务器。

最初,我意识到在通过Voila单击时无法下载基本案例。

from IPython.display import display, FileLink

local_file = FileLink('./demo.xlsx', result_html_prefix="Click here to download: ")
display(local_file)

输出截图

那是从我的笔记本上来的。我可以单击链接并下载文件。当我用Voila启动笔记本时,它看起来更像是这样。在此处输入图片说明

点击链接,以404☝️开头的voila服务器

voila mynotebook.ipynb

由于文件显然没有被提供...我在这里找到此链接并尝试:

voila mynotebook.ipynb --VoilaConfiguration.file_whitelist="['demo.xlsx']"

不幸的是,这没有用。

我看到静态内容可以在voila中投放。.我会继续走这条路。有人做过吗?

尼克·布雷迪

我可以通过托管文件以使其像以前一样作为静态内容下载来使其工作。所有这些都是针对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>

使用锚将使其进行硬编码,而我没有任何问题。无论如何,我也可以为锚定样式。一个陷阱。.这在常规笔记本中不再起作用,因为它是voila下提供服务的资源的URI。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章