无法从docker镜像执行Bokeh export_png

问题描述 投票:0回答:2

当尝试运行在 Docker 容器中通过 nbconvert 运行 export_png 的 Jupyter 笔记本时,出现以下错误。

 Neither firefox and geckodriver nor a variant of chromium browser and chromedriver are available on system PATH. You can install the former with 'conda install -c conda-forge firefox geckodriver'.

我有一个配置了类似依赖项的 Linux 虚拟机,一切正常。 我发现如果路径指向脚本,则查找 Firefox 时会出现错误,但我的却没有,如下面输出的最后几行所示。 我开始认为产生的运行时错误是一个转移注意力的事情,它实际上抛出了一个不同的错误,但硬编码到该消息。

在 docker 镜像中运行 bokeh export_png 是否存在任何已知问题? 有什么必要的配置吗? 有人使用 firefox、geckodriver、selenium 和 bokeh 版本成功做到这一点吗?可以分享一下吗? 安装 chromium 并不容易,因为这一切都在公司 conda 镜像后面,没有这些软件包。

/opt/conda/lib/python3.7/site-packages/bokeh/io/webdriver.py in get(self)
    116         if not self.reuse or self.current is None:
    117             self.reset()
--> 118             self.current = self.create()
    119         return self.current
    120

/opt/conda/lib/python3.7/site-packages/bokeh/io/webdriver.py in create(self, kind)
    120
    121     def create(self, kind: Optional[DriverKind] = None) -> WebDriver:
--> 122         driver = self._create(kind)
    123         self._drivers.add(driver)
    124         return driver

/opt/conda/lib/python3.7/site-packages/bokeh/io/webdriver.py in _create(self, kind)
    138                 return driver
    139
--> 140             raise RuntimeError("Neither firefox and geckodriver nor a variant of chromium browser and " \
    141                                "chromedriver are available on system PATH. You can install the former " \
    142                                "with 'conda install -c conda-forge firefox geckodriver'.")

RuntimeError: Neither firefox and geckodriver nor a variant of chromium browser and chromedriver are available on system PATH. You can install the former with 'conda install -c conda-forge firefox geckodriver'.
RuntimeError: Neither firefox and geckodriver nor a variant of chromium browser and chromedriver are available on system PATH. You can install the former with 'conda install -c conda-forge firefox geckodriver'.

[g_de_auto@0ff0d47b4a0f data_science_foundation]$ which firefox
/opt/conda/bin/FirefoxApp/firefox
[g_de_auto@0ff0d47b4a0f data_science_foundation]$ which geckodriver
/opt/conda/bin/geckodriver
[g_de_auto@0ff0d47b4a0f data_science_foundation]$ cat /opt/conda/bin/FirefoxApp/firefox
ELF>@@1@8
         @@@@@@h@@@@@@  @ @-=@=@-=@=@0@@DDPtd` ` @` @<<QtdRtd-=@=@PP/lib64/ld-linux-x86-64.so.2GNU GNUB
m5Jzq
       ms- libpthread.so.0__errno_locationlibdl.so.2__gmon_start__libstdc++.so.6libm.so.6libgcc_s.so.1libc.so.6execv__stack_chk_fail_]`@@D]fD`@@UH`@@HHHH?HHtHt @@(@@0@@8@@@@@H@H/Ht5/%/@%/h%/h%/h%/h%/h%/h%/h%R/f1I^HHPTI@Hp@H@fDU`@@H=`@@HtHt
17dH%(H;tf.DAWAAVIAUIATL%(+UH-(+SL)1H]HtLLDAHH9u[]A\A]A^A_ff./proc/self/exeCouldn't find the application directory.
-binExec failed with error: %s

更新 我从 _try_create_firefox_webdriver 函数中得到的基本错误是 SessionNotCreatedException('无法找到匹配的功能集')

docker bokeh
2个回答
0
投票

选择使用Xvfb。 研究过 Kaleido,但我没有看到与 Bokeh 的轻松集成。 步骤是:

安装以下依赖项。

yum install gtk3-devel xorg-x11-server-Xvfb.x86_64 selenium geckodriver=0.26.0 firefox=74.0

告诉 Firefox 使用什么显示器(虚拟显示器)。

export DISPLAY=:0

按照我的命令启动 Xvfb。

Xvfb :0 -screen 0 1920x1080x24 & script_that_turns_charts_to_images

0
投票

我也有同样的问题。花了一段时间才找到,但解决方案是在 docker 容器中添加一个 env 变量。

ENV BOKEH_IN_DOCKER=1

我必须进入 bokeh.io.webdriver 代码才能找到该 env 变量作为选项

© www.soinside.com 2019 - 2024. All rights reserved.