Skip to content
This repository has been archived by the owner on Aug 28, 2021. It is now read-only.

ImportError: dynamic module does not define module export function (PyInit_objrender) #53

Closed
lionminhu opened this issue Jan 14, 2019 · 4 comments

Comments

@lionminhu
Copy link

Hello, I have been building the renderer as instructed in House3D/renderer/README.md.
When I tried checking whether the renderer works successfully by running python test-rendering.py (The corresponding house.obj file has already been created), I get the following results.

kbkim@user:~/House3D/tests$ export PYTHONPATH=..
kbkim@user:~/House3D/tests$ python test-rendering.py /home/kbkim/suncg_data/house/00065ecbdd7300d35ef4328ffe871505/house.obj
Traceback (most recent call last):
  File "test-rendering.py", line 12, in <module>
    from House3D import objrender, create_default_config
  File "/home/kbkim/House3D/House3D/__init__.py", line 6, in <module>
    from .core import Environment, MultiHouseEnv
  File "/home/kbkim/House3D/House3D/core.py", line 17, in <module>
    from .objrender import RenderMode
ImportError: dynamic module does not define module export function (PyInit_objrender)
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "test-rendering.py", line 12, in <module>
    from House3D import objrender, create_default_config
  File "/home/kbkim/House3D/House3D/__init__.py", line 6, in <module>
    from .core import Environment, MultiHouseEnv
  File "/home/kbkim/House3D/House3D/core.py", line 17, in <module>
    from .objrender import RenderMode
ImportError: dynamic module does not define module export function (PyInit_objrender)

As for the missing module 'apt_pkg', I have not found any other solution than apt-get install python-apt (as described here), which has not changed my error message either.

I have Python 3.6.7, and cv2.__version__ gives '4.0.0'.

The OS, NVidia driver versions are as follows.

kbkim@user:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial
kbkim@user:~/House3D/tests$ nvidia-smi
Mon Jan 14 16:57:03 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.130                Driver Version: 384.130                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN V             On   | 00000000:18:00.0 Off |                  N/A |
| 36%   51C    P8    33W / 250W |      0MiB / 12058MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  TITAN V             On   | 00000000:3B:00.0 Off |                  N/A |
| 40%   57C    P8    36W / 250W |      0MiB / 12058MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  TITAN V             On   | 00000000:86:00.0 Off |                  N/A |
| 38%   54C    P8    29W / 250W |      0MiB / 12058MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  TITAN V             On   | 00000000:AF:00.0 Off |                  N/A |
| 41%   58C    P8    33W / 250W |      0MiB / 12058MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Running debug-build.sh gives the following output.

kbkim@user:~/House3D/renderer$ ./debug-build.sh
PATH:
/home/kbkim/bin:/home/kbkim/.local/bin:/usr/local/cuda-9.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

CPATH:


PKG_CONFIG_PATH:


LIBRARY_PATH:


LD_LIBRARY_PATH:
/usr/local/cuda-9.0/lib64:

PYTHONPATH:
..

ldconfig:
        libEGL_nvidia.so.0 (libc6,x86-64) => /usr/lib/nvidia-384/libEGL_nvidia.so.0
        libEGL_nvidia.so.0 (libc6) => /usr/lib32/nvidia-384/libEGL_nvidia.so.0
        libEGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-384/libEGL.so.1
        libEGL.so.1 (libc6) => /usr/lib32/nvidia-384/libEGL.so.1
        libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so
        libEGL.so (libc6,x86-64) => /usr/lib/nvidia-384/libEGL.so
        libEGL.so (libc6) => /usr/lib32/nvidia-384/libEGL.so
+ pkg-config --cflags --libs glfw3
-I/usr/include/libdrm -lglfw
+ '[' '!' '' ']'
+ pkg-config --cflags --libs libglvnd
-I/usr/local/include
+ pkg-config --cflags --libs egl
-I/usr/include/libdrm -lEGL
+ which find
/usr/bin/find
+ which pkg-config
/usr/bin/pkg-config
+ which python-config
/usr/bin/python-config
+ python-config --includes --ldflags
-I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7
-L/usr/lib/python2.7/config-x86_64-linux-gnu -L/usr/lib -lpython2.7 -lpthread -ldl  -lutil -lm  -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
+ '[' ']'
+ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

+ '[' -f ../House3D/objrender.so ']'
+ ldd ../House3D/objrender.so
        linux-vdso.so.1 =>  (0x00007ffc1d558000)
        libGL.so.1 => /usr/local/lib/libGL.so.1 (0x00007fa83a6ec000)
        libEGL.so.1 => /usr/lib/nvidia-384/libEGL.so.1 (0x00007fa83a4e7000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa83a1ad000)
        libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fa839f87000)
        libglfw.so.3 => /usr/lib/x86_64-linux-gnu/libglfw.so.3 (0x00007fa839d71000)
        libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007fa839b18000)
        libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007fa839589000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa83936c000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa838fea000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa838ce0000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa838aca000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa838700000)
        /lib64/ld-linux-x86-64.so.2 (0x000056458ad58000)
        libGLX.so.0 => /usr/local/lib/libGLX.so.0 (0x00007fa8384c3000)
        libGLdispatch.so.0 => /usr/local/lib/libGLdispatch.so.0 (0x00007fa838208000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa838004000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fa837de1000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa837bc7000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa8379bf000)
        libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007fa8377b3000)
        libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007fa8375b0000)
        libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007fa8373a0000)
        libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007fa837199000)
        libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007fa836f8f000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fa836d8c000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fa836b87000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fa836981000)
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fa83676e000)
        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fa836564000)
        libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fa83635e000)

Thank you in advance.

@ppwwyyxx
Copy link
Contributor

This error is mentioned in the README already: https://github.com/facebookresearch/House3D/tree/master/renderer

Your library is compiled against python 2:

    libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007fa839589000)

However you're running it with python 3.

@lionminhu
Copy link
Author

I have just tried compiling with PYTHON_CONFIG=python3-config make -j (after make clean), and running test-rendering.py now gives the following message.

kbkim@user:~/House3D/tests$ python test-rendering.py /home/kbkim/suncg_data/house/00065ecbdd7300d35ef4328ffe871505/house.obj
Traceback (most recent call last):
  File "test-rendering.py", line 12, in <module>
    from House3D import objrender, create_default_config
  File "/home/kbkim/House3D/House3D/__init__.py", line 6, in <module>
    from .core import Environment, MultiHouseEnv
  File "/home/kbkim/House3D/House3D/core.py", line 17, in <module>
    from .objrender import RenderMode
ImportError: Python version mismatch: module was compiled for version 3.5, while the interpreter is running version 3.6.
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "test-rendering.py", line 12, in <module>
    from House3D import objrender, create_default_config
  File "/home/kbkim/House3D/House3D/__init__.py", line 6, in <module>
    from .core import Environment, MultiHouseEnv
  File "/home/kbkim/House3D/House3D/core.py", line 17, in <module>
    from .objrender import RenderMode
ImportError: Python version mismatch: module was compiled for version 3.5, while the interpreter is running version 3.6.

Running debug-build.sh gives the following output.

PATH:
/home/kbkim/bin:/home/kbkim/.local/bin:/usr/local/cuda-9.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

CPATH:


PKG_CONFIG_PATH:


LIBRARY_PATH:


LD_LIBRARY_PATH:
/usr/local/cuda-9.0/lib64:

PYTHONPATH:
..

ldconfig:
        libEGL_nvidia.so.0 (libc6,x86-64) => /usr/lib/nvidia-384/libEGL_nvidia.so.0
        libEGL_nvidia.so.0 (libc6) => /usr/lib32/nvidia-384/libEGL_nvidia.so.0
        libEGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-384/libEGL.so.1
        libEGL.so.1 (libc6) => /usr/lib32/nvidia-384/libEGL.so.1
        libEGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libEGL.so
        libEGL.so (libc6,x86-64) => /usr/lib/nvidia-384/libEGL.so
        libEGL.so (libc6) => /usr/lib32/nvidia-384/libEGL.so
+ pkg-config --cflags --libs glfw3
-I/usr/include/libdrm -lglfw
+ '[' '!' '' ']'
+ pkg-config --cflags --libs libglvnd
-I/usr/local/include
+ pkg-config --cflags --libs egl
-I/usr/include/libdrm -lEGL
+ which find
/usr/bin/find
+ which pkg-config
/usr/bin/pkg-config
+ which python-config
/usr/bin/python-config
+ python-config --includes --ldflags
-I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7
-L/usr/lib/python2.7/config-x86_64-linux-gnu -L/usr/lib -lpython2.7 -lpthread -ldl  -lutil -lm  -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
+ '[' ']'
+ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

+ '[' -f ../House3D/objrender.so ']'
+ ldd ../House3D/objrender.so
        linux-vdso.so.1 =>  (0x00007fff69a59000)
        libGL.so.1 => /usr/local/lib/libGL.so.1 (0x00007fe804e71000)
        libEGL.so.1 => /usr/lib/nvidia-384/libEGL.so.1 (0x00007fe804c6c000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe804932000)
        libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fe80470c000)
        libglfw.so.3 => /usr/lib/x86_64-linux-gnu/libglfw.so.3 (0x00007fe8044f6000)
        libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007fe80429d000)
        libpython3.5m.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.5m.so.1.0 (0x00007fe803c15000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe8039f8000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe803676000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe80336c000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe803156000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe802d8c000)
        /lib64/ld-linux-x86-64.so.2 (0x0000556361dda000)
        libGLX.so.0 => /usr/local/lib/libGLX.so.0 (0x00007fe802b4f000)
        libGLdispatch.so.0 => /usr/local/lib/libGLdispatch.so.0 (0x00007fe802894000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe802690000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe80246d000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe802253000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe80204b000)
        libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007fe801e3f000)
        libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007fe801c3c000)
        libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007fe801a2c000)
        libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007fe801825000)
        libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007fe80161b000)
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe8013f2000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fe8011ee000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe800fea000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fe800de3000)
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fe800bd1000)
        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fe8009c7000)
        libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fe8007c0000)

Figuring that I would have to compile for Python 3.6, I tried PYTHON_CONFIG=python3.6-config make -j, which results in the following error message.

[dep] objview-suncg.cpp ...
[dep] test-rectangle.cpp ...
[dep] objview-offline.cpp ...
[dep] objview.cpp ...
[dep] suncg/scene.cc ...
[dep] suncg/render.cc ...
[dep] vendor/tiny_obj_loader.cc ...
[dep] rectangle/scene.cc ...
[dep] model/obj.cc ...
[dep] model/scene.cc ...
[dep] model/mesh.cc ...
[dep] model/shader.cc ...
[dep] gl/camera.cc ...
[dep] gl/utils.cc ...
[dep] gl/glContext.cc ...
[dep] lib/timer.cc ...
[dep] lib/imgproc.cc ...
[dep] lib/imgio.cc ...
[dep] lib/strutils.cc ...
[dep] lib/debugutils.cc ...
[cc] lib/debugutils.cc ...
[cc] lib/strutils.cc ...
[cc] lib/imgio.cc ...
[cc] lib/imgproc.cc ...
[cc] lib/timer.cc ...
[cc] gl/glContext.cc ...
[cc] gl/utils.cc ...
[cc] gl/camera.cc ...
[cc] model/shader.cc ...
[cc] model/mesh.cc ...
[cc] model/scene.cc ...
[cc] model/obj.cc ...
[cc] rectangle/scene.cc ...
[cc] vendor/tiny_obj_loader.cc ...
[cc] suncg/render.cc ...
[cc] suncg/scene.cc ...
[cpp] objview.cpp ...
[cpp] objview-offline.cpp ...
[cpp] test-rectangle.cpp ...
[cpp] objview-suncg.cpp ...
[bin] objview.bin ...
[bin] objview-offline.bin ...
[bin] test-rectangle.bin ...
[bin] objview-suncg.bin ...
bash: python3.6-config: command not found
[so] ../House3D/objrender.so ...
In file included from vendor/pybind11/pytypes.h:12:0,
                 from vendor/pybind11/cast.h:13,
                 from vendor/pybind11/attr.h:13,
                 from vendor/pybind11/pybind11.h:43,
                 from python/pybind.cc:8:
vendor/pybind11/detail/common.h:111:20: fatal error: Python.h: No such file or directory
compilation terminated.
In file included from vendor/pybind11/pytypes.h:12:0,
                 from vendor/pybind11/cast.h:13,
                 from vendor/pybind11/attr.h:13,
                 from vendor/pybind11/pybind11.h:43,
                 from vendor/pybind11/numpy.h:12,
                 from python/house.hh:9,
                 from python/house.cc:7:
vendor/pybind11/detail/common.h:111:20: fatal error: Python.h: No such file or directory
compilation terminated.
Makefile:56: recipe for target '../House3D/objrender.so' failed
make: *** [../House3D/objrender.so] Error 1
make: *** Waiting for unfinished jobs....

@ppwwyyxx
Copy link
Contributor

it says bash: python3.6-config: command not found

@lionminhu
Copy link
Author

So I had to install python3.6-dev. It turns out that installing it on Ubuntu 16.04 is less straightforward, but this did the job.

Thank you for your help.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants