从 Jupyter Notebook 在 Voila 中下载文件
File download in Voila from Jupyter Notebook
关于从 Jupyter Notebook 下载文件,有很多问题和很好的答案。 Here's one 我之前补充的。这行得通,但我无法为使用 Voila 启动的服务器单击并下载该文件。
原来我是在点击Voila的时候发现基本案例下载不了
from IPython.display import display, FileLink
local_file = FileLink('./demo.xlsx', result_html_prefix="Click here to download: ")
display(local_file)
那是我笔记本上的。我可以单击 link 并下载文件。当我用 Voila 开始我的笔记本时,它看起来更像这样……
点击 link 给一个 404 ☝️ 对于以
启动的 voila 服务器
voila mynotebook.ipynb
由于显然没有提供文件...我找到 this link here 并尝试了:
voila mynotebook.ipynb --VoilaConfiguration.file_whitelist="['demo.xlsx']"
不幸的是没有用。
我看到可以在 voila 中提供静态内容。我会继续沿着这条路走下去。有人做过吗?
我能够通过托管我的文件来使其工作,以便像我之前尝试的那样将其下载为静态内容。所有这些都是针对 Mac,但对于其他平台也是类似的。
我必须定义一个自定义模板才能在 static_root
获取文件,以便可以提供这些文件。与设置自定义模板相关documentation is here。
这并不困难.. 您基本上可以在预期的位置创建一个目录,复制一些默认文件,然后 add/change 您将要复制的内容。终端记录可能看起来像这样:
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
。我把它加进去了。那是我想通过 link.
下载的文件
像这样开始瞧...
voila mynotebook.ipynb --template=foobar
现在..在mynotebook.ipynb
使用 HTML 锚标记进行下载。至少 FileLink
对我来说失败并出现以下错误。
Path (/voila/static/demo.xlsx) doesn't exist. It may still be in the process of being generated, or you may have the incorrect path.
这并不奇怪,因为文件存储在 的实际路径不是 。它恰好是静态内容 uri。
%%html
<a href="./voila/static/demo.xlsx" download="demo.xlsx">Download Excel Sheet</a>
使用锚点会使它硬编码,我没有遇到任何问题。无论如何,我也可以为锚定更多样式。一个问题.. 这在普通笔记本中不再有效,因为它是 voila 下服务资源的 URI。
关于从 Jupyter Notebook 下载文件,有很多问题和很好的答案。 Here's one 我之前补充的。这行得通,但我无法为使用 Voila 启动的服务器单击并下载该文件。
原来我是在点击Voila的时候发现基本案例下载不了
from IPython.display import display, FileLink
local_file = FileLink('./demo.xlsx', result_html_prefix="Click here to download: ")
display(local_file)
那是我笔记本上的。我可以单击 link 并下载文件。当我用 Voila 开始我的笔记本时,它看起来更像这样……
点击 link 给一个 404 ☝️ 对于以
启动的 voila 服务器voila mynotebook.ipynb
由于显然没有提供文件...我找到 this link here 并尝试了:
voila mynotebook.ipynb --VoilaConfiguration.file_whitelist="['demo.xlsx']"
不幸的是没有用。
我看到可以在 voila 中提供静态内容。我会继续沿着这条路走下去。有人做过吗?
我能够通过托管我的文件来使其工作,以便像我之前尝试的那样将其下载为静态内容。所有这些都是针对 Mac,但对于其他平台也是类似的。
我必须定义一个自定义模板才能在 static_root
获取文件,以便可以提供这些文件。与设置自定义模板相关documentation is here。
这并不困难.. 您基本上可以在预期的位置创建一个目录,复制一些默认文件,然后 add/change 您将要复制的内容。终端记录可能看起来像这样:
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
。我把它加进去了。那是我想通过 link.
像这样开始瞧...
voila mynotebook.ipynb --template=foobar
现在..在mynotebook.ipynb
使用 HTML 锚标记进行下载。至少 FileLink
对我来说失败并出现以下错误。
Path (/voila/static/demo.xlsx) doesn't exist. It may still be in the process of being generated, or you may have the incorrect path.
这并不奇怪,因为文件存储在 的实际路径不是 。它恰好是静态内容 uri。
%%html
<a href="./voila/static/demo.xlsx" download="demo.xlsx">Download Excel Sheet</a>
使用锚点会使它硬编码,我没有遇到任何问题。无论如何,我也可以为锚定更多样式。一个问题.. 这在普通笔记本中不再有效,因为它是 voila 下服务资源的 URI。