tinyobjloader / tinyobjloader

Tiny but powerful single file wavefront obj loader
Other
3.35k stars 614 forks source link

ERROR: Failed building wheel for tinyobjloader - Trying to install Python bindings failed! #281

Open Cocco17 opened 4 years ago

Cocco17 commented 4 years ago

Describe the issue I just tried to install the python bindings using PyPi with the command "pip install tinyobjloader". However, there seems to be a problem with a missing file "tiny_obj_loader.h":

    bindings.cc:10:10: fatal error: 'tiny_obj_loader.h' file not found
    #include "tiny_obj_loader.h"

Environment

Does anybody else have this problem? The whole log file looks like this:

pip install tinyobjloader
Collecting tinyobjloader
  Downloading tinyobjloader-0.1.tar.gz (3.1 kB)
Building wheels for collected packages: tinyobjloader
  Building wheel for tinyobjloader (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: '.../virtualenv/bin/python' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/setup.py'"'"'; __file__='"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/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 /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-wheel-lkgc0vyz
       cwd: /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/
  Complete output (12 lines):
  running bdist_wheel
  running build
  running build_ext
  building 'tinyobjloader' extension
  creating build
  creating build/temp.macosx-10.15-x86_64-3.8
  clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I../ -I../pybind11/include -I/usr/local/include -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/sqlite/include -I/.../virtualenv/include -I/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c bindings.cc -o build/temp.macosx-10.15-x86_64-3.8/bindings.o -std=c++11
  bindings.cc:10:10: fatal error: 'tiny_obj_loader.h' file not found
  #include "tiny_obj_loader.h"
           ^~~~~~~~~~~~~~~~~~~
  1 error generated.
  error: command 'clang' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for tinyobjloader
  Running setup.py clean for tinyobjloader
Failed to build tinyobjloader
DEPRECATION: Could not build wheels for tinyobjloader which do not use PEP 517. pip will fall back to legacy 'setup.py install' for these. pip 21.0 will remove support for this functionality. A possible replacement is to fix the wheel build issue reported above. You can find discussion regarding this at https://github.com/pypa/pip/issues/8368.
Installing collected packages: tinyobjloader
    Running setup.py install for tinyobjloader ... error
    ERROR: Command errored out with exit status 1:
     command: '.../virtualenv/bin/python' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/setup.py'"'"'; __file__='"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-record-ptvilqp5/install-record.txt --single-version-externally-managed --compile --install-headers '.../virtualenv/include/site/python3.8/tinyobjloader'
         cwd: /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/
    Complete output (12 lines):
    running install
    running build
    running build_ext
    building 'tinyobjloader' extension
    creating build
    creating build/temp.macosx-10.15-x86_64-3.8
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I../ -I../pybind11/include -I/usr/local/include -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/sqlite/include -I/.../virtualenv/include -I/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c bindings.cc -o build/temp.macosx-10.15-x86_64-3.8/bindings.o -std=c++11
    bindings.cc:10:10: fatal error: 'tiny_obj_loader.h' file not found
    #include "tiny_obj_loader.h"
             ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    error: command 'clang' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: '.../virtualenv/bin/python' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/setup.py'"'"'; __file__='"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-2vj753ms/tinyobjloader/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-record-ptvilqp5/install-record.txt --single-version-externally-managed --compile --install-headers '.../virtualenv/include/site/python3.8/tinyobjloader' Check the logs for full command output.

I updated and upgraded pip, but that didn't solve the issue:

(virtualenv) (base) MBP: pip install pip --upgrade
Requirement already up-to-date: pip in ./virtualenv/lib/python3.8/site-packages (20.2.2)
(virtualenv) (base) MBP: pip install setuptools --upgrade 
Collecting setuptools
  Using cached setuptools-49.6.0-py3-none-any.whl (803 kB)
Installing collected packages: setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 49.2.1
    Uninstalling setuptools-49.2.1:
      Successfully uninstalled setuptools-49.2.1
Successfully installed setuptools-49.6.0
(virtualenv) (base) MBP: pip install tinyobjloader
Collecting tinyobjloader
  Using cached tinyobjloader-0.1.tar.gz (3.1 kB)
Building wheels for collected packages: tinyobjloader
  Building wheel for tinyobjloader (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: '.../virtualenv/bin/python' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/setup.py'"'"'; __file__='"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/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 /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-wheel-8eydjugw
       cwd: /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/
  Complete output (12 lines):
  running bdist_wheel
  running build
  running build_ext
  building 'tinyobjloader' extension
  creating build
  creating build/temp.macosx-10.15-x86_64-3.8
  clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I../ -I../pybind11/include -I/usr/local/include -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/sqlite/include -I/.../virtualenv/include -I/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c bindings.cc -o build/temp.macosx-10.15-x86_64-3.8/bindings.o -std=c++11
  bindings.cc:10:10: fatal error: 'tiny_obj_loader.h' file not found
  #include "tiny_obj_loader.h"
           ^~~~~~~~~~~~~~~~~~~
  1 error generated.
  error: command 'clang' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for tinyobjloader
  Running setup.py clean for tinyobjloader
Failed to build tinyobjloader
DEPRECATION: Could not build wheels for tinyobjloader which do not use PEP 517. pip will fall back to legacy 'setup.py install' for these. pip 21.0 will remove support for this functionality. A possible replacement is to fix the wheel build issue reported above. You can find discussion regarding this at https://github.com/pypa/pip/issues/8368.
Installing collected packages: tinyobjloader
    Running setup.py install for tinyobjloader ... error
    ERROR: Command errored out with exit status 1:
     command: '.../virtualenv/bin/python' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/setup.py'"'"'; __file__='"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-record-ib010ohc/install-record.txt --single-version-externally-managed --compile --install-headers '.../virtualenv/include/site/python3.8/tinyobjloader'
         cwd: /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/
    Complete output (12 lines):
    running install
    running build
    running build_ext
    building 'tinyobjloader' extension
    creating build
    creating build/temp.macosx-10.15-x86_64-3.8
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I../ -I../pybind11/include -I/usr/local/include -I/usr/local/opt/openssl@1.1/include -I/usr/local/opt/sqlite/include -I/.../virtualenv/include -I/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c bindings.cc -o build/temp.macosx-10.15-x86_64-3.8/bindings.o -std=c++11
    bindings.cc:10:10: fatal error: 'tiny_obj_loader.h' file not found
    #include "tiny_obj_loader.h"
             ^~~~~~~~~~~~~~~~~~~
    1 error generated.
    error: command 'clang' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: '.../virtualenv/bin/python' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/setup.py'"'"'; __file__='"'"'/private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-install-m93xbcii/tinyobjloader/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/5l/fz9zb8t97gd0lfys34g_5r040000gq/T/pip-record-ib010ohc/install-record.txt --single-version-externally-managed --compile --install-headers '.../virtualenv/include/site/python3.8/tinyobjloader' Check the logs for full command output.

Thanks a lot in advance!

syoyo commented 4 years ago

You need to use 2.0.0 branch: https://pypi.org/project/tinyobjloader/2.0.0rc7/ (it has a precompiled binary for Windows, Linux and macOS)

NOTE: python binding is not officially supported yet

Cocco17 commented 4 years ago

Alright, thanks a lot for the quick response! Just tried to install it and it seems to work :)

Regarding your note: I see that this is still an early version and there is no official support yet. However, I was looking for a parser to view wavefront obj files with pyqtgraph and I wanna give it a shot with this bindings.

syoyo commented 4 years ago

At least python bindings should work well for mandatory attributes(vertex positions, indices, etc).

There may be missing parameters(e.g. Material parameters) which is not yet exposed into Python world. Contribution of improving python bindings is always welcome.