Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tried to install MPLib in MacOS but failed to build wheel #89

Open
rafaelBauer opened this issue Jun 5, 2024 · 7 comments
Open

Tried to install MPLib in MacOS but failed to build wheel #89

rafaelBauer opened this issue Jun 5, 2024 · 7 comments

Comments

@rafaelBauer
Copy link

Hello,

I am trying to install MPlib using pip to use it in my python project. But when I try to install it in a MacOS, I am getting the error below:

  Building wheel for mplib (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for mplib (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [287 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.9-x86_64-cpython-312
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib
      copying mplib/planner.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib
      copying mplib/__init__.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib
      copying mplib/urdf_utils.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/sapien_utils
      copying mplib/sapien_utils/conversion.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/sapien_utils
      copying mplib/sapien_utils/__init__.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/sapien_utils
      copying mplib/sapien_utils/srdf_exporter.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/sapien_utils
      copying mplib/sapien_utils/urdf_exporter.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/sapien_utils
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/planning
      copying mplib/planning/__init__.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/planning
      copying mplib/planning/ompl.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/planning
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/kinematics
      copying mplib/kinematics/pinocchio.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/kinematics
      copying mplib/kinematics/__init__.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/kinematics
      copying mplib/kinematics/kdl.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/kinematics
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/moving_robot.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/detect_collision.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/constrained_planning.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/__init__.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/demo_setup.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/collision_avoidance.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/two_stage_motion.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      copying mplib/examples/demo.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/examples
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/collision_detection
      copying mplib/collision_detection/__init__.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/collision_detection
      copying mplib/collision_detection/fcl.py -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/collision_detection
      running egg_info
      writing mplib.egg-info/PKG-INFO
      writing dependency_links to mplib.egg-info/dependency_links.txt
      writing requirements to mplib.egg-info/requires.txt
      writing top-level names to mplib.egg-info/top_level.txt
      reading manifest file 'mplib.egg-info/SOURCES.txt'
      adding license file 'LICENSE'
      writing manifest file 'mplib.egg-info/SOURCES.txt'
      /private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'mplib.pymp' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'mplib.pymp' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'mplib.pymp' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'mplib.pymp' to be distributed and are
              already explicitly excluding 'mplib.pymp' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      /private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'mplib.pymp.collision_detection' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'mplib.pymp.collision_detection' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'mplib.pymp.collision_detection' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'mplib.pymp.collision_detection' to be distributed and are
              already explicitly excluding 'mplib.pymp.collision_detection' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      /private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'mplib.pymp.kinematics' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'mplib.pymp.kinematics' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'mplib.pymp.kinematics' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'mplib.pymp.kinematics' to be distributed and are
              already explicitly excluding 'mplib.pymp.kinematics' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      /private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'mplib.pymp.planning' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'mplib.pymp.planning' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'mplib.pymp.planning' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'mplib.pymp.planning' to be distributed and are
              already explicitly excluding 'mplib.pymp.planning' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      copying mplib/py.typed -> build/lib.macosx-10.9-x86_64-cpython-312/mplib
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp
      copying mplib/pymp/__init__.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/collision_detection
      copying mplib/pymp/collision_detection/__init__.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/collision_detection
      copying mplib/pymp/collision_detection/fcl.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/collision_detection
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/kinematics
      copying mplib/pymp/kinematics/__init__.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/kinematics
      copying mplib/pymp/kinematics/kdl.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/kinematics
      copying mplib/pymp/kinematics/pinocchio.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/kinematics
      creating build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/planning
      copying mplib/pymp/planning/__init__.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/planning
      copying mplib/pymp/planning/ompl.pyi -> build/lib.macosx-10.9-x86_64-cpython-312/mplib/pymp/planning
      running build_ext
      CMake Warning:
        Ignoring extra path from command line:
      
         "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-install-xnxme_ni/mplib_61644204c213440fbd06ef1a1ff895a0"
      
      
      CMake Error: The source directory "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-install-xnxme_ni/mplib_61644204c213440fbd06ef1a1ff895a0" does not appear to contain CMakeLists.txt.
      Specify --help for usage, or press the help button on the CMake GUI.
      ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-install-xnxme_ni/mplib_61644204c213440fbd06ef1a1ff895a0/build/lib.macosx-10.9-x86_64-cpython-312/mplib/', '-DPYTHON_EXECUTABLE=/usr/local/anaconda3/envs/myenv/bin/python', '-DCMAKE_BUILD_TYPE=Release'] ['-j16']
      Traceback (most recent call last):
        File "/usr/local/anaconda3/envs/myenv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/usr/local/anaconda3/envs/myenv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/usr/local/anaconda3/envs/myenv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 410, in build_wheel
          return self._build_with_temp_dir(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 395, in _build_with_temp_dir
          self.run_setup()
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 74, in <module>
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/__init__.py", line 103, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 184, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 200, in run_commands
          dist.run_commands()
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/dist.py", line 968, in run_command
          super().run_command(command)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/normal/lib/python3.12/site-packages/wheel/bdist_wheel.py", line 368, in run
          self.run_command("build")
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/dist.py", line 968, in run_command
          super().run_command(command)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/build.py", line 132, in run
          self.run_command(cmd_name)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/dist.py", line 968, in run_command
          super().run_command(command)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/command/build_ext.py", line 91, in run
          _build_ext.run(self)
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/build_ext.py", line 359, in run
          self.build_extensions()
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/build_ext.py", line 479, in build_extensions
          self._build_extensions_serial()
        File "/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-build-env-kbhifi26/overlay/lib/python3.12/site-packages/setuptools/_distutils/command/build_ext.py", line 505, in _build_extensions_serial
          self.build_extension(ext)
        File "<string>", line 66, in build_extension
        File "/usr/local/anaconda3/envs/myenv/lib/python3.12/subprocess.py", line 571, in run
          raise CalledProcessError(retcode, process.args,
      subprocess.CalledProcessError: Command '['cmake', '/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-install-xnxme_ni/mplib_61644204c213440fbd06ef1a1ff895a0', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/private/var/folders/3z/3c7znnwn4xx154m06z799rpm0000gn/T/pip-install-xnxme_ni/mplib_61644204c213440fbd06ef1a1ff895a0/build/lib.macosx-10.9-x86_64-cpython-312/mplib/', '-DPYTHON_EXECUTABLE=/usr/local/anaconda3/envs/myenv/bin/python', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1.
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for mplib
Failed to build mplib
ERROR: Could not build wheels for mplib, which is required to install pyproject.toml-based projects

It seems that it is trying to compile something using CMake. I am familiar with C++ and CMake, but I am quite new to python and wheel, an so on. Any pointers on how could I solve this?

Kind regards,
Rafael

@Lexseal
Copy link
Collaborator

Lexseal commented Jun 5, 2024

hi, unfortunately, we do not currently compile a wheel for macos. It is theoretically possible though, since each component can be compiled individually on mac. I can try it later today and you're welcome to check out the dev dir for instructions if you want to try yourself : )

@rafaelBauer
Copy link
Author

Okay. Thanks! I will clone your repo and try it out! Thanks!

@LukasSchweizer
Copy link

Did you solved the issue for MacOS? I have the same problem on Windows 10.

@rafaelBauer
Copy link
Author

No, I didn't solve it yet.

@UIOSN
Copy link

UIOSN commented Aug 16, 2024

I have the same problem on win11. Is mplib only suitable for linux?

@Lexseal
Copy link
Collaborator

Lexseal commented Aug 16, 2024

sorry unfortunately yes as of right now

@UIOSN
Copy link

UIOSN commented Aug 17, 2024

alright, thks anyway

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

No branches or pull requests

4 participants