pythonblenderpython-moduleopenexr

ModuleNotFoundError: No module named 'OpenEXR' on blender


I'm trying to use OpenEXR module on blender's 3.1.2 script but I can't import it. I can import it using my python 3.8.10 installed.

I first install it using :

pip install openexr

pip3 install openexr

sudo apt install libopenexr-dev

And it works fine on my python 3.8.10 command line.

I then tried to install it using the blender's python version :

./python3.10 -m pip install openexr

but I get that error from gcc :

Defaulting to user installation because normal site-packages is not writeable
Collecting openexr
  Using cached OpenEXR-1.3.8.tar.gz (11 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: openexr
  Building wheel for openexr (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [16 lines of output]
      Looking for libOpenEXR...
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.10
      copying Imath.py -> build/lib.linux-x86_64-3.10
      running build_ext
      building 'OpenEXR' extension
      creating build/temp.linux-x86_64-3.10
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/sqlite/include -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/bzip2/include -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/lzma/include -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/zlib/include -fPIC -fPIC -fPIC -I/usr/include/OpenEXR -I/usr/local/include/OpenEXR -I/opt/local/include/OpenEXR -I/usr/include/Imath -I/usr/local/include/Imath -I/opt/local/include/Imath -I/snap/blender/2106/3.1/python/include/python3.10 -c OpenEXR.cpp -o build/temp.linux-x86_64-3.10/OpenEXR.o -g -DVERSION="1.3.8"
      OpenEXR.cpp:1:10: fatal error: Python.h: No such file or directory
          1 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for openexr
  Running setup.py clean for openexr
Failed to build openexr
Installing collected packages: openexr
  Running setup.py install for openexr ... error
  error: subprocess-exited-with-error
  
  × Running setup.py install for openexr did not run successfully.
  │ exit code: 1
  ╰─> [16 lines of output]
      Looking for libOpenEXR...
      running install
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.10
      copying Imath.py -> build/lib.linux-x86_64-3.10
      running build_ext
      building 'OpenEXR' extension
      creating build/temp.linux-x86_64-3.10
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/sqlite/include -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/bzip2/include -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/lzma/include -I/home/sybren/buildbot-builder/linux_glibc217_x86_64_cmake/build_deps/deps/Release/zlib/include -fPIC -fPIC -fPIC -I/usr/include/OpenEXR -I/usr/local/include/OpenEXR -I/opt/local/include/OpenEXR -I/usr/include/Imath -I/usr/local/include/Imath -I/opt/local/include/Imath -I/snap/blender/2106/3.1/python/include/python3.10 -c OpenEXR.cpp -o build/temp.linux-x86_64-3.10/OpenEXR.o -g -DVERSION="1.3.8"
      OpenEXR.cpp:1:10: fatal error: Python.h: No such file or directory
          1 | #include <Python.h>
            |          ^~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> openexr

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

Any way to solve that issue so I can use OpenEXR on blender or make blender to use python installed instead of it's own version ?

I'm on ubuntu 20.04


Solution

  • I finally get it to work by copying the files from OpenEXR-1.3.8 into the folder of the python executable and then installing OpenEXR.

    1- Download OpenEXR-1.3.8 from here.

    2- Copy all the files into your blender python executable, for me it was : /homa/jros/Downloads/blender-2.90.0-linux64/2.90/python/bin

    3- Run the executable with those parameters -m setup.py install like so

    ./python3.7m -m setup.py install
    

    and it should work. You might need to install those as well :

    sudo apt install python3.10-dev
    pip install openexr
    pip3 install openexr
    sudo apt install libopenexr-dev