Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python包中的Jupyter笔记本中显示.gif_Python_Jupyter Notebook - Fatal编程技术网

如何在Python包中的Jupyter笔记本中显示.gif

如何在Python包中的Jupyter笔记本中显示.gif,python,jupyter-notebook,Python,Jupyter Notebook,我正在编写一个用于交互式数据可视化的小python包。我们希望在包中包含GIF,以便用户可以运行一个示例并学习如何与图形交互 以下是一个示例结构: <package> +-->some_module/ +--> static/ +--> foo.gif +--> spam.py +-->examples/ +--> example.ipynb 当gif位于jup

我正在编写一个用于交互式数据可视化的小python包。我们希望在包中包含GIF,以便用户可以运行一个示例并学习如何与图形交互

以下是一个示例结构:

<package>
    +-->some_module/
        +--> static/
            +--> foo.gif
        +--> spam.py
    +-->examples/
       +--> example.ipynb
当gif位于jupyter笔记本所在文件夹的子目录中时,该选项可以正常工作,但当gif位于软件包的同级目录中时(如上面的示例所示),则该选项不起作用

编辑:

我相信我可以访问.gif,但无法在jupyter笔记本中显示它(见下文)

还有类似的堆栈溢出问题()建议使用标准库中的
importlib.resources模块
。但是,它们返回一个我不知道如何处理的Binaryo实例,请参见:

import some_module.static as static

…

def show_gif(self):
    image = pkg_resources.open_binary(static, 'foo.gif')
    return Image(data=image)

这会引发一个错误,因为我为数据提供了错误的类型。如何打开此.gif文件并将其显示在jupyter笔记本中?

使用任何方法查找gif文件的路径并将其打开以供阅读
pkg\u resources.open\u binary()
就可以了,不过由于这是磁盘上的实际文件,所以有更简单的方法。但是现在您有了一个打开的文件句柄,而不是内容本身——与对文件调用
open()
时相同。要获取图像数据,需要从文件句柄中读取()

然后就有了一个
bytes
对象,而不是一个文本字符串。这不是问题,因为构造函数中的
Image()
接受
bytes

with pkg_resources.open_binary(some_module, 'foo.gif') as src:
    imagedata = src.read()
image = Image(data=imagedata)

“我已经尝试过这个[importlib.resources],但是收到一个编码错误”是您应该尝试解决的问题。如果您只是从链接的答案复制粘贴的
importlib.resources.open_text()
,请将其更改为
importlib.resources.open_binary()
;GIF是二进制文件。我也尝试过打开二进制文件,但会有另一个尝试…谢谢你的评论,我已经更新了问题(见编辑)。我仍在查看它,但相信我需要将open_binary返回的
图像
转换为
图像
with pkg_resources.open_binary(some_module, 'foo.gif') as src:
    imagedata = src.read()
image = Image(data=imagedata)