nmwsharp / nmwsharp/polyscope

Running polyscope on remote servers [python]

未关闭
#99 9 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
C++
星标
2.2k
派生
242
平均合并
11 分钟
30 天内合并 PR
1

描述

context

I am trying to run the python polyscope library in a headless environment (running some tests in CI); but that has presented some challenges. This issue is the same underlying cause as #82 .

Environment

  • docker container
  • OS: ubuntu
  • Python 3.8.6
  • Polyscope: 0.1.6

polyscope installed with: python -m pip install polyscope

Partial fixes

I worked through a couple of issues but couldn't get everything working (yet):

apt-get install -y libglfw3-dev
apt-get install -y xvfb
export DISPLAY=:99.0
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &

There error I get when running python -c "import polyscope as ps; ps.init() is the following:

[polyscope] Backend: openGL3_glfw -- Loaded openGL version: 3.3 (Core Profile) Mesa 18.3.6
[polyscope] Polyscope OpenGL Error!  Type: Invalid enum
GLError() after shader compilation! Program text:


// tag ${ GLSL_VERSION }$
// from rule: GLSL_VERSION
#version 330 core

      in vec3 a_position;
      out vec2 tCoord;

      void main()
      {
          tCoord = (a_position.xy+vec2(1.0,1.0))/2.0;
          gl_Position = vec4(a_position,1.);
      }

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/conda/lib/python3.8/site-packages/polyscope/core.py", line 12, in init
    psb.init(backend)
RuntimeError: OpenGl error occurred. Text: Invalid enum
[1] + Done(1)                    Xvfb :99 -screen 0 1024x768x24 1>/dev/null 2>&1

I've put the debugging process I've been through so far and would appreciate any tips on where to go next.

Thanks for an already fantastic project! Keep up the great work 😀

Missing glfw

The first error you might encounter when running polyscope in a headless environment is a missing glfw the error looks like issue #82:
running the command: python -c "import polyscope as ps; ps.init() throws the following error:

backend = ''

    def init(backend=""):
        """Initialize Polyscope"""
    
        cwd_before = os.getcwd() # see note below
    
>       psb.init(backend)
E       RuntimeError: [polyscope] ERROR: Failed to initialize glfw

/opt/conda/envs/test/lib/python3.8/site-packages/polyscope/core.py:12: RuntimeError
Fix on ubuntu

The fix to that is to install glfw

sudo apt-get install libglfw3

Missing display

re-running the command: python -c "import polyscope as ps; ps.init()" throws the following error:

GLFW emitted error: X11: The DISPLAY environment variable is missing
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/conda/lib/python3.8/site-packages/polyscope/core.py", line 12, in init
    psb.init(backend)
RuntimeError: [polyscope] ERROR: Failed to initialize glfw

v

Adding a display (to /dev/null)
apt-get install -y xvfb
export DISPLAY=:99.0
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &

(credit for this fix to: https://github.com/pyvista/gl-ci-helpers)

OpenGL error

re-running the command: python -c "import polyscope as ps; ps.init()" throws the following error:

[polyscope] Backend: openGL3_glfw -- Loaded openGL version: 3.3 (Core Profile) Mesa 18.3.6
[polyscope] Polyscope OpenGL Error!  Type: Invalid enum
GLError() after shader compilation! Program text:


// tag ${ GLSL_VERSION }$
// from rule: GLSL_VERSION
#version 330 core

      in vec3 a_position;
      out vec2 tCoord;

      void main()
      {
          tCoord = (a_position.xy+vec2(1.0,1.0))/2.0;
          gl_Position = vec4(a_position,1.);
      }

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/opt/conda/lib/python3.8/site-packages/polyscope/core.py", line 12, in init
    psb.init(backend)
RuntimeError: OpenGl error occurred. Text: Invalid enum
[1] + Done(1)                    Xvfb :99 -screen 0 1024x768x24 1>/dev/null 2>&1

At this point, I've not found a fix yet.

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

在 Ubuntu/Xvfb 环境中重现报告的 python -c "import polyscope as ps; ps.init()" 失败,然后阅读 polyscope/core.py 中显示的初始化路径,并将其与 issue #82 进行比较。在 headless 的 CI 式设置中,ps.init() 能够成功执行且没有 GLFW 或 OpenGL 错误,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
docker, python, ubuntu
领域
devops, testing
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
需要澄清
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。