在 CentOS 7 中为原生 Python 3(而非 Anaconda Python)安装 OpenDR

在 CentOS 7 中为原生 Python 3(而非 Anaconda Python)安装 OpenDR

以下命令不起作用。您能指导我如何修复它吗?

$ pip install opendr
Collecting opendr
  Downloading opendr-0.78.tar.gz (581 kB)
     |████████████████████████████████| 581 kB 1.3 MB/s 
Requirement already satisfied: Cython in /scratch3/venv/frank/lib/python3.8/site-packages (from opendr) (0.29.22)
Requirement already satisfied: chumpy>=0.58 in /scratch3/venv/frank/lib/python3.8/site-packages (from opendr) (0.70)
Requirement already satisfied: matplotlib in /scratch3/venv/frank/lib/python3.8/site-packages (from opendr) (3.4.0)
Requirement already satisfied: scipy>=0.13.0 in /scratch3/venv/frank/lib/python3.8/site-packages (from chumpy>=0.58->opendr) (1.6.2)
Requirement already satisfied: six>=1.11.0 in /scratch3/venv/frank/lib/python3.8/site-packages (from chumpy>=0.58->opendr) (1.15.0)
Requirement already satisfied: numpy<1.23.0,>=1.16.5 in /scratch3/venv/frank/lib/python3.8/site-packages (from scipy>=0.13.0->chumpy>=0.58->opendr) (1.20.2)
Requirement already satisfied: kiwisolver>=1.0.1 in /scratch3/venv/frank/lib/python3.8/site-packages (from matplotlib->opendr) (1.3.1)
Requirement already satisfied: pyparsing>=2.2.1 in /scratch3/venv/frank/lib/python3.8/site-packages (from matplotlib->opendr) (2.4.7)
Requirement already satisfied: python-dateutil>=2.7 in /scratch3/venv/frank/lib/python3.8/site-packages (from matplotlib->opendr) (2.8.1)
Requirement already satisfied: cycler>=0.10 in /scratch3/venv/frank/lib/python3.8/site-packages (from matplotlib->opendr) (0.10.0)
Requirement already satisfied: pillow>=6.2.0 in /scratch3/venv/frank/lib/python3.8/site-packages (from matplotlib->opendr) (8.1.2)
Building wheels for collected packages: opendr
  Building wheel for opendr (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /scratch3/venv/frank/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/setup.py'"'"'; __file__='"'"'/scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /scratch/tmp/pip-wheel-xb1f2chh
       cwd: /scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/
  Complete output (65 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.8
  creating build/lib.linux-x86_64-3.8/opendr
  copying opendr/__init__.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/camera.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/common.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/cvwrap.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/dummy.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/everything.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/filters.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/geometry.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/lighting.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/occlusion_test.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/renderer.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/serialization.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/simple.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/slider_demo.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/test_camera.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/test_depth_renderer.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/test_geometry.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/test_renderer.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/test_sh.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/topology.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/util_tests.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/utils.py -> build/lib.linux-x86_64-3.8/opendr
  copying opendr/version.py -> build/lib.linux-x86_64-3.8/opendr
  creating build/lib.linux-x86_64-3.8/opendr/contexts
  copying opendr/contexts/__init__.py -> build/lib.linux-x86_64-3.8/opendr/contexts
  copying opendr/contexts/_constants.py -> build/lib.linux-x86_64-3.8/opendr/contexts
  copying opendr/contexts/autogen.py -> build/lib.linux-x86_64-3.8/opendr/contexts
  copying opendr/contexts/draw_triangle_shaders_2_1.py -> build/lib.linux-x86_64-3.8/opendr/contexts
  copying opendr/contexts/draw_triangle_shaders_3_2.py -> build/lib.linux-x86_64-3.8/opendr/contexts
  copying opendr/contexts/fix_warnings.py -> build/lib.linux-x86_64-3.8/opendr/contexts
  creating build/lib.linux-x86_64-3.8/opendr/test_dr
  copying opendr/test_dr/__init__.py -> build/lib.linux-x86_64-3.8/opendr/test_dr
  running build_ext
  building 'opendr.contexts.ctx_mesa' extension
  creating build/temp.linux-x86_64-3.8
  creating build/temp.linux-x86_64-3.8/opendr
  creating build/temp.linux-x86_64-3.8/opendr/contexts
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -D__OSMESA__=1 -Iopendr/contexts -I. -I/scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include -Iopendr/contexts/OSMesa/include -I/scratch3/venv/frank/include -I/usr/local/include/python3.8 -c opendr/contexts/ctx_mesa.c -o build/temp.linux-x86_64-3.8/opendr/contexts/ctx_mesa.o -lstdc++
  In file included from /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1944:0,
                   from /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                   from /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                   from opendr/contexts/ctx_mesa.c:660:
  /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
   #warning "Using deprecated NumPy API, disable it with " \
    ^~~~~~~
  opendr/contexts/ctx_mesa.c: In function ‘__pyx_pf_6opendr_8contexts_8ctx_mesa_13OsContextBase_150ShaderSource’:
  opendr/contexts/ctx_mesa.c:13144:49: warning: passing argument 3 of ‘glShaderSource’ from incompatible pointer type [-Wincompatible-pointer-types]
     glShaderSource(__pyx_v_shader, __pyx_v_count, (&__pyx_v_s), (&__pyx_v_len));
                                                   ^
  In file included from opendr/contexts/OSMesa/include/GL/gl.h:2085:0,
                   from opendr/contexts/gl_includes.h:10,
                   from opendr/contexts/ctx_mesa.c:668:
  opendr/contexts/OSMesa/include/GL/glext.h:5794:21: note: expected ‘const GLchar ** {aka const char **}’ but argument is of type ‘char **’
   GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
                       ^~~~~~~~~~~~~~
  gcc -pthread -shared build/temp.linux-x86_64-3.8/opendr/contexts/ctx_mesa.o -Lopendr/contexts/OSMesa/lib -lOSMesa -lGL -lGLU -o build/lib.linux-x86_64-3.8/opendr/contexts/ctx_mesa.cpython-38-x86_64-linux-gnu.so -lstdc++
  /usr/bin/ld: cannot find -lOSMesa
  collect2: error: ld returned 1 exit status
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for opendr
  Running setup.py clean for opendr
Failed to build opendr
Installing collected packages: opendr
    Running setup.py install for opendr ... error
    ERROR: Command errored out with exit status 1:
     command: /scratch3/venv/frank/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/setup.py'"'"'; __file__='"'"'/scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /scratch/tmp/pip-record-q52my77n/install-record.txt --single-version-externally-managed --compile --install-headers /scratch3/venv/frank/include/site/python3.8/opendr
         cwd: /scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/
    Complete output (65 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/opendr
    copying opendr/__init__.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/camera.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/common.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/cvwrap.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/dummy.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/everything.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/filters.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/geometry.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/lighting.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/occlusion_test.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/renderer.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/serialization.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/simple.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/slider_demo.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/test_camera.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/test_depth_renderer.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/test_geometry.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/test_renderer.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/test_sh.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/topology.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/util_tests.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/utils.py -> build/lib.linux-x86_64-3.8/opendr
    copying opendr/version.py -> build/lib.linux-x86_64-3.8/opendr
    creating build/lib.linux-x86_64-3.8/opendr/contexts
    copying opendr/contexts/__init__.py -> build/lib.linux-x86_64-3.8/opendr/contexts
    copying opendr/contexts/_constants.py -> build/lib.linux-x86_64-3.8/opendr/contexts
    copying opendr/contexts/autogen.py -> build/lib.linux-x86_64-3.8/opendr/contexts
    copying opendr/contexts/draw_triangle_shaders_2_1.py -> build/lib.linux-x86_64-3.8/opendr/contexts
    copying opendr/contexts/draw_triangle_shaders_3_2.py -> build/lib.linux-x86_64-3.8/opendr/contexts
    copying opendr/contexts/fix_warnings.py -> build/lib.linux-x86_64-3.8/opendr/contexts
    creating build/lib.linux-x86_64-3.8/opendr/test_dr
    copying opendr/test_dr/__init__.py -> build/lib.linux-x86_64-3.8/opendr/test_dr
    running build_ext
    building 'opendr.contexts.ctx_mesa' extension
    creating build/temp.linux-x86_64-3.8
    creating build/temp.linux-x86_64-3.8/opendr
    creating build/temp.linux-x86_64-3.8/opendr/contexts
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -D__OSMESA__=1 -Iopendr/contexts -I. -I/scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include -Iopendr/contexts/OSMesa/include -I/scratch3/venv/frank/include -I/usr/local/include/python3.8 -c opendr/contexts/ctx_mesa.c -o build/temp.linux-x86_64-3.8/opendr/contexts/ctx_mesa.o -lstdc++
    In file included from /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/ndarraytypes.h:1944:0,
                     from /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                     from /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                     from opendr/contexts/ctx_mesa.c:660:
    /scratch3/venv/frank/lib/python3.8/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
     #warning "Using deprecated NumPy API, disable it with " \
      ^~~~~~~
    opendr/contexts/ctx_mesa.c: In function ‘__pyx_pf_6opendr_8contexts_8ctx_mesa_13OsContextBase_150ShaderSource’:
    opendr/contexts/ctx_mesa.c:13144:49: warning: passing argument 3 of ‘glShaderSource’ from incompatible pointer type [-Wincompatible-pointer-types]
       glShaderSource(__pyx_v_shader, __pyx_v_count, (&__pyx_v_s), (&__pyx_v_len));
                                                     ^
    In file included from opendr/contexts/OSMesa/include/GL/gl.h:2085:0,
                     from opendr/contexts/gl_includes.h:10,
                     from opendr/contexts/ctx_mesa.c:668:
    opendr/contexts/OSMesa/include/GL/glext.h:5794:21: note: expected ‘const GLchar ** {aka const char **}’ but argument is of type ‘char **’
     GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
                         ^~~~~~~~~~~~~~
    gcc -pthread -shared build/temp.linux-x86_64-3.8/opendr/contexts/ctx_mesa.o -Lopendr/contexts/OSMesa/lib -lOSMesa -lGL -lGLU -o build/lib.linux-x86_64-3.8/opendr/contexts/ctx_mesa.cpython-38-x86_64-linux-gnu.so -lstdc++
    /usr/bin/ld: cannot find -lOSMesa
    collect2: error: ld returned 1 exit status
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /scratch3/venv/frank/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/setup.py'"'"'; __file__='"'"'/scratch/tmp/pip-install-2xl2_aae/opendr_cca5ff679db14567af924447cc43444b/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /scratch/tmp/pip-record-q52my77n/install-record.txt --single-version-externally-managed --compile --install-headers /scratch3/venv/frank/include/site/python3.8/opendr Check the logs for full command output.

我有:

$ python
Python 3.8.5 (default, Mar 31 2021, 02:37:07) 
[GCC 7.3.1 20180303 (Red Hat 7.3.1-5)] on linux

$ lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:    7.9.2009
Codename:   Core


答案1

现在,PyPI 上列出的 opendr 最新版本pip从哪里提取文件)是 0.78 版本。此版本仅列出支持 Python 2,而您使用的是 Python 3。安装 opendr 的最直接途径是创建一个 Python 虚拟环境(例如 Python 2.7),然后在该环境中安装 opendr(将任何其他潜在问题放在一边)。

我需要为 Python 3 安装 opendr。

然后你可能会希望谷歌搜索类似“opendr python 3“。这将返回如下结果这个 GitHub 问题这个 GitHub 问题讨论了该主题。简而言之,似乎至少有一种方法可以使用一些附加软件包来安装 opendr(未直接讨论 CentOS),而另一种选择是安装该项目的一个分支。

列出的分支 (Python 3)


需要注意的是,OSMesa API 可能是一个症结所在。上面的两个 GitHub 问题都间接提到了这一点,这个 Stack Overflow 问题以及您自己的错误输出。

相关内容