【问题标题】:locate lib Orca with python使用 python 定位 lib Orca
【发布时间】:2018-12-10 16:56:30
【问题描述】:

我正在尝试将绘图导出为 jpg 文件。为此,我正在使用以下代码:

from plotly.offline import iplot, init_notebook_mode
import plotly.graph_objs as go
import plotly.io as pio
import plotly

import os
import numpy as np

init_notebook_mode(connected=True)

N = 100
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
sz = np.random.rand(N)*30

fig = go.Figure()
fig.add_scatter(x=x,
                y=y,
                mode='markers',
                marker={'size': sz,
                        'color': colors,
                        'opacity': 0.6,
                        'colorscale': 'Viridis'
                       });
iplot(fig)

pio.write_image(fig, 'fig1.png')

我遇到的问题是 ORCA。该库可以定位,但已安装。这是我得到的错误:

值错误: 需要 orca 可执行文件才能将图形导出为静态图像, 但是在“/opt/conda/bin/orca”中找到的可执行文件 似乎不是有效的情节逆戟鲸可执行文件。请参考文末 此消息以获取有关问题的详细信息。

如果您还没有安装 orca,您可以使用 conda 进行安装,如下所示:

$ conda install -c plotly plotly-orca

或者,请参阅 orca 项目 README 中的其他安装方法 https://github.com/plotly/orca.

安装完成后,无需进一步配置。

如果你已经安装了 orca,那么由于某种原因 plotly.py 无法 找到它。在这种情况下,设置plotly.io.orca.config.executable 属性到您的 orca 可执行文件的完整路径。例如:

>>> plotly.io.orca.config.executable = '/path/to/orca'

更新此可执行属性后,再次尝试导出操作。 如果成功,那么您可能需要保存此配置,以便它 将在以后的会话中自动应用。你可以这样做:

>>> plotly.io.orca.config.save() 

如果您仍然遇到问题,请随时在论坛上寻求帮助: https://community.plot.ly/c/api/python

这是命令返回的错误 $ /opt/conda/bin/orca --help

[返回码:127] /opt/conda/lib/orca_app/orca:加载共享库时出错:libXtst.so.6:无法打开共享对象文件:没有这样的文件或目录

注意:在 Linux 上使用时,orca 需要 X11 显示服务器,但没有 检测到。请安装 X11,或使用 Xvfb 配置您的系统。看 orca README (https://github.com/plotly/orca) 获取使用说明 带 Xvfb 的逆戟鲸。

有人知道如何解决这个错误吗?

【问题讨论】:

    标签: python plotly orca


    【解决方案1】:

    为了让 Orca 在我的 Django 2 项目中在 Ubuntu 18 上工作,我不得不投入大量精力。这是我所做的最终奏效的方法:

    我是在 Ubuntu 18.04.3 LTS 上完成的

    在下面假设你的用户名是 USERNAME 并且你的虚拟环境目录被命名为“myvenv”

    1. 将 Orca AppImage 文件获取到 /home/USERNAME/myvenv/bin 并更改文件的权限

    wget https://github.com/plotly/orca/releases/download/v1.2.1/orca-1.2.1-x86_64.AppImage chmod +x orca-1.2.1-x86_64.AppImage

    1. 安装以下软件包

    sudo apt-get install desktop-file-utils
    sudo apt-get install libgtk2.0-0 sudo apt-get install libgconf-2-4 sudo apt-get install xvfb sudo apt-get install chromium-browser

    1. 在 /home/USERNAME/myvenv/bin/ 中创建一个名为 orca 的文件,其内容如下:

    #!/bin/bash

    xvfb-run -a orca-1.2.1-x86_64.AppImage "$@"

    【讨论】:

      【解决方案2】:

      解决办法在plotly/orca

      这就是我所做的,它解决了我的问题:

      1. 下载orca-1.2.1-x86_64.AppImage

      2. 通过ln -s orca-1.2.1-x86_64.AppImage orca 建立软链接,然后你会看到orca -> orca-1.2.1-x86_64.AppImage*

      3. 创建一个文件并将其命名为orca-executable.sh,其内容为

        #!/bin/bash

        xvfb-run -a orca "$@"

      然后将下面的行添加到您的脚本中

      plotly.io.orca.config.executable = '/path/to/orca/orca-executable.sh'
      

      路径/path/to/orca下的文件:

      rwxrwxrwx 1 root root       26 Feb 14 03:09 orca -> orca-1.2.1-x86_64.AppImage*
      -rwxr-xr-x 1 root root 51607939 Feb 14 03:08 orca-1.2.1-x86_64.AppImage*
      -rwxr-xr-x 1 root root       34 Feb 14 03:33 orca-executable.sh*
      

      【讨论】:

      • 类似的方法甚至允许在无头系统上的 Docker 容器内使用 orca,如 here 所讨论的,这使得只需使用浏览器和 MyBinder 系统即可访问已安装 orca 的机器。如果您想启动这样的机器或查看here 来启动一台机器,链接在该页面上。
      • 嗨@Haifeng Zhang,你的操作系统是 ubuntu 吗?我看到你安装了 Xvfb,但你也安装了 libgtk2.0-0、libgconf-2-4 和 chromium-browser 吗?我的是 AWS Linux,它没有 libgtk2.0-0, libgconf-2-4 。我下载了 orca-1.2.1-x86_64.AppImage (使用 --appimage-extract 解压它)并按照你的方法,但 orca.sh 给出“/usr/bin/xvfb-run: line 166: 0: command not found “ 错误。见我的帖子stackoverflow.com/questions/62639101/…
      【解决方案3】:

      在 Windows 上对我有用的是:

      • 遵循https://github.com/plotly/orca#installation - 方法 4:独立二进制文件:

        • https://github.com/plotly/orca/releases下载windows-release.zip
        • 安装可执行文件
        • 在桌面上新创建的Orca图标上右击可以得到 应用程序已安装(在我的情况下为 C:\Users\ventafri\AppData\Local\Programs\orca\orca.exe)。
        • 从 plotly\io 文件夹(在我的情况下为 C:\Users\ventafri\AppData\Local\Programs\Python\Python36\Lib\site-packages\plotly\io)打开 _orca.py

      替补:

        # Try to find an executable
         # -------------------------
         # Search for executable name or path in config.executable
         executable = which(config.executable)
         path = os.environ.get("PATH", os.defpath)
         formatted_path = path.replace(os.pathsep, "\n    ")
      

      与:

      # Try to find an executable
      # -------------------------
      # Search for executable name or path in config.executable
      executable = r"C:\Users\ventafri\AppData\Local\Programs\orca\orca.exe"
      path = os.environ.get("PATH", os.defpath)
      formatted_path = path.replace(os.pathsep, "\n    ")
      

      【讨论】:

        【解决方案4】:

        正如@Eudald 在Windows 中提到的here 以解决您需要将plotly-orca 降级到1.2.1 的问题:

        conda install -c plotly plotly-orca==1.2.1
        

        【讨论】:

          【解决方案5】:

          我只是解决它

          (mac 操作系统)

          运行以下命令:

          sudo conda install -c plotly plotly-orca
          

          【讨论】:

          • 您好,请问是什么版本的 OSX 和 conda?您是否必须像在 ubuntu 上一样安装 Xvfb、chromium-browser、libgtk2.0-0 和 libgconf-2-4?我无法让 orca 运行 AWS linux AMI(不是 ubuntu),请参阅我的帖子 stackoverflow.com/questions/62639101/…。我不知道,这只逆戟鲸又笨又痛苦。
          【解决方案6】:

          按照 KittenCrypto 在https://stackoverflow.com/a/59893131/5650199 中描述的过程,我也能够让 orca 工作,但对于那些习惯于通过 node.js 安装 orca 的人,我想我会详细说明另一种方法:

          sudo apt-get install xvfb
          sudo npm install -g electron@6.1.4 orca
          

          然后用 xvfb 启动脚本替换节点安装的符号链接/usr/local/bin/orca

          sudo rm -f /usr/local/bin/orca
          printf '#!/bin/bash\nxvfb-run -a /usr/local/lib/node_modules/orca/bin/orca.js "$@"' | sudo tee /usr/local/bin/orca
          sudo chmod +x /usr/local/bin/orca
          

          我在安装了 apt 的 python3.7 环境的 Ubuntu 18.04 服务器上执行此操作,并通过运行测试静态图像导出是否按预期工作:

          import pandas as pd
          import plotly.express as px
          
          x = [0, 2, 4]
          y = [0, 4, 16]
          df = pd.DataFrame({'x': x, 'y': y})
          fig = px.line(df, x='x', y='y')
          fig.write_image('test.png')
          

          请注意,即使您没有运行 anaconda python 发行版,上述过程也可以工作。

          【讨论】:

          • 我发现orca用npm安装了另一个Python版本。我刚刚删除了另一个版本,它起作用了。
          • 你能补充更多细节吗?根据我的经验,npm 不会安装适用于无头服务器的配置(无需手动添加 xvfb-run)
          • 我的意思是,不是保留当前版本的 Python,而是 npm 额外安装了不同版本的 Python。可能是 32 位与 64 位的问题?
          • @M.Forsythe,我的操作系统是 AWS linux AMI(不是 ubuntu),它没有 libgtk2.0-0 和 libgconf-2-4 。我按照你的方法,尝试了你的示例代码,得到了“fuse: failed to exec fusermount: No such file or directory”错误。我也试过(在这个线程上的第二个答案)张海峰的方法,得到“/usr/bin/xvfb-run: line 166: 0: command not found”错误。另见我的帖子stackoverflow.com/questions/62639101/…。我没有想法尝试。这个逆戟鲸是如此笨重和痛苦,似乎只能在 Windows 和 ubuntu(也许是 mac os)上工作。
          • @ngBeginner 我目前无法访问 AWS linux 系统,所以我无法帮助您,但 fuse 错误听起来好像您在加密卷上遇到了权限问题。 Haifeng Zhang 的方法和我的方法都需要正确安装 xvfb 作为先决条件。如果您能够在 AWS linux 发行版上使用 anaconda 的 python 发行版,那可能会解决您的问题。
          猜你喜欢
          • 1970-01-01
          • 2023-04-05
          • 2019-07-26
          • 1970-01-01
          • 2018-10-07
          • 1970-01-01
          • 2018-01-23
          • 2010-10-27
          • 1970-01-01
          相关资源
          最近更新 更多