Windows ARM64 mujoco python build. #2889
Unanswered
taesoobear
asked this question in
Asking for Help
Replies: 1 comment 2 replies
-
You may want to add some debug prints in https://github.com/google-deepmind/mujoco/blob/9f796c3e7051b9cba194ae5e4884987c711ba656/python/setup.py#L188C1-L190C74 to understand if the headers or the library is the one that is not found. |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Intro
Hi!
I am a professor at Hanyang University. I use MuJoCo for my research on character animation. There are no prebuilt binaries for Windows ARM64 on PyPI, and I know how to build a wheel, so I attempted to build them. Compiling MuJoCo C++ with CMake worked without any issues. Next, I packaged the built binaries following exactly the same structure as the official Windows x64 binaries:
`
PS C:\Users\taeso\mujoco\built> ls
d----- 2025-10-03 7:25 bin
d----- 2025-10-03 7:34 include
d----- 2025-10-03 7:27 lib
d----- 2025-10-03 7:28 model
d----- 2025-10-03 7:28 sample
d----- 2025-10-03 7:28 simulate
-a---- 2025-10-03 7:28 30549 THIRD_PARTY_NOTICES.txt
`
Then, I navigated to the mujoco/python directory and ran the following batch file:
set MUJOCO_PATH="C:\Users\taeso\mujoco\built"
set MUJOCO_PLUGIN_PATH= "C:\Users\taeso\mujoco\built\bin\mujoco_plugin"
python -m build
(Also tried pip install mujoco instead of python -m build)
And this results in an error that I cannot parse:
`
C:\Users\taeso\mujoco\python>python -m build
running egg_info
writing mujoco.egg-info\PKG-INFO
writing dependency_links to mujoco.egg-info\dependency_links.txt
writing requirements to mujoco.egg-info\requires.txt
writing top-level names to mujoco.egg-info\top_level.txt
reading manifest file 'mujoco.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'LICENSE'
warning: no files found matching '.cc.inc' under directory 'mujoco'
warning: no files found matching '.cmake' under directory 'mujoco'
writing manifest file 'mujoco.egg-info\SOURCES.txt'
running sdist
running egg_info
writing mujoco.egg-info\PKG-INFO
writing dependency_links to mujoco.egg-info\dependency_links.txt
writing requirements to mujoco.egg-info\requires.txt
writing top-level names to mujoco.egg-info\top_level.txt
reading manifest file 'mujoco.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'LICENSE'
warning: no files found matching '.cc.inc' under directory 'mujoco'
warning: no files found matching '.cmake' under directory 'mujoco'
writing manifest file 'mujoco.egg-info\SOURCES.txt'
running check
creating mujoco-3.3.7
creating mujoco-3.3.7\mujoco
creating mujoco-3.3.7\mujoco.egg-info
creating mujoco-3.3.7\mujoco\cgl
creating mujoco-3.3.7\mujoco\egl
creating mujoco-3.3.7\mujoco\glfw
creating mujoco-3.3.7\mujoco\introspect
creating mujoco-3.3.7\mujoco\introspect\codegen
creating mujoco-3.3.7\mujoco\mjpython
creating mujoco-3.3.7\mujoco\osmesa
creating mujoco-3.3.7\mujoco\testdata
creating mujoco-3.3.7\mujoco\usd
creating mujoco-3.3.7\mujoco\util
copying files to mujoco-3.3.7...
copying MANIFEST.in -> mujoco-3.3.7
copying README.md -> mujoco-3.3.7
copying pyproject.toml -> mujoco-3.3.7
copying setup.py -> mujoco-3.3.7
copying mujoco\CMakeLists.txt -> mujoco-3.3.7\mujoco
copying mujoco_init_.py -> mujoco-3.3.7\mujoco
copying mujoco\bindings_test.py -> mujoco-3.3.7\mujoco
copying mujoco\callbacks.cc -> mujoco-3.3.7\mujoco
copying mujoco\constants.cc -> mujoco-3.3.7\mujoco
copying mujoco\enums.cc -> mujoco-3.3.7\mujoco
copying mujoco\errors.cc -> mujoco-3.3.7\mujoco
copying mujoco\errors.h -> mujoco-3.3.7\mujoco
copying mujoco\functions.cc -> mujoco-3.3.7\mujoco
copying mujoco\functions.h -> mujoco-3.3.7\mujoco
copying mujoco\gl_context.py -> mujoco-3.3.7\mujoco
copying mujoco\indexer_xmacro.h -> mujoco-3.3.7\mujoco
copying mujoco\indexers.cc -> mujoco-3.3.7\mujoco
copying mujoco\indexers.h -> mujoco-3.3.7\mujoco
copying mujoco\memory_leak_test.py -> mujoco-3.3.7\mujoco
copying mujoco\minimize.py -> mujoco-3.3.7\mujoco
copying mujoco\minimize_test.py -> mujoco-3.3.7\mujoco
copying mujoco\msh2obj.py -> mujoco-3.3.7\mujoco
copying mujoco\msh2obj_test.py -> mujoco-3.3.7\mujoco
copying mujoco\private.h -> mujoco-3.3.7\mujoco
copying mujoco\raw.h -> mujoco-3.3.7\mujoco
copying mujoco\render.cc -> mujoco-3.3.7\mujoco
copying mujoco\render_test.py -> mujoco-3.3.7\mujoco
copying mujoco\renderer.py -> mujoco-3.3.7\mujoco
copying mujoco\renderer_test.py -> mujoco-3.3.7\mujoco
copying mujoco\rollout.cc -> mujoco-3.3.7\mujoco
copying mujoco\rollout.py -> mujoco-3.3.7\mujoco
copying mujoco\rollout_test.py -> mujoco-3.3.7\mujoco
copying mujoco\serialization.h -> mujoco-3.3.7\mujoco
copying mujoco\simulate.cc -> mujoco-3.3.7\mujoco
copying mujoco\specs.cc -> mujoco-3.3.7\mujoco
copying mujoco\specs_test.py -> mujoco-3.3.7\mujoco
copying mujoco\specs_wrapper.cc -> mujoco-3.3.7\mujoco
copying mujoco\specs_wrapper.h -> mujoco-3.3.7\mujoco
copying mujoco\structs.cc -> mujoco-3.3.7\mujoco
copying mujoco\structs.h -> mujoco-3.3.7\mujoco
copying mujoco\structs_wrappers.cc -> mujoco-3.3.7\mujoco
copying mujoco\threadpool.cc -> mujoco-3.3.7\mujoco
copying mujoco\threadpool.h -> mujoco-3.3.7\mujoco
copying mujoco\viewer.py -> mujoco-3.3.7\mujoco
copying mujoco\viewer_test.py -> mujoco-3.3.7\mujoco
copying mujoco.egg-info\PKG-INFO -> mujoco-3.3.7\mujoco.egg-info
copying mujoco.egg-info\SOURCES.txt -> mujoco-3.3.7\mujoco.egg-info
copying mujoco.egg-info\dependency_links.txt -> mujoco-3.3.7\mujoco.egg-info
copying mujoco.egg-info\requires.txt -> mujoco-3.3.7\mujoco.egg-info
copying mujoco.egg-info\top_level.txt -> mujoco-3.3.7\mujoco.egg-info
copying mujoco\cgl_init_.py -> mujoco-3.3.7\mujoco\cgl
copying mujoco\cgl\cgl.py -> mujoco-3.3.7\mujoco\cgl
copying mujoco\egl_init_.py -> mujoco-3.3.7\mujoco\egl
copying mujoco\egl\egl_ext.py -> mujoco-3.3.7\mujoco\egl
copying mujoco\glfw_init_.py -> mujoco-3.3.7\mujoco\glfw
copying mujoco\introspect_init_.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\ast_nodes.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\ast_nodes_test.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\enums.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\enums_test.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\functions.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\functions_test.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\mjxmacro.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\structs.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\structs_test.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\type_parsing.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\type_parsing_test.py -> mujoco-3.3.7\mujoco\introspect
copying mujoco\introspect\codegen\formatter.py -> mujoco-3.3.7\mujoco\introspect\codegen
copying mujoco\introspect\codegen\generate_enums.py -> mujoco-3.3.7\mujoco\introspect\codegen
copying mujoco\introspect\codegen\generate_functions.py -> mujoco-3.3.7\mujoco\introspect\codegen
copying mujoco\introspect\codegen\generate_structs.py -> mujoco-3.3.7\mujoco\introspect\codegen
copying mujoco\mjpython\Info.plist -> mujoco-3.3.7\mujoco\mjpython
copying mujoco\mjpython\mjpython.icns -> mujoco-3.3.7\mujoco\mjpython
copying mujoco\mjpython\mjpython.mm -> mujoco-3.3.7\mujoco\mjpython
copying mujoco\mjpython\mjpython.py -> mujoco-3.3.7\mujoco\mjpython
copying mujoco\osmesa_init_.py -> mujoco-3.3.7\mujoco\osmesa
copying mujoco\testdata\abdomen_1_body.msh -> mujoco-3.3.7\mujoco\testdata
copying mujoco\testdata\model.xml -> mujoco-3.3.7\mujoco\testdata
copying mujoco\testdata\msh.xml -> mujoco-3.3.7\mujoco\testdata
copying mujoco\testdata\simple_usd_preview_surface.usda -> mujoco-3.3.7\mujoco\testdata
copying mujoco\testdata\usd_golden.usda -> mujoco-3.3.7\mujoco\testdata
copying mujoco\usd\camera.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\usd\demo.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\usd\exporter.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\usd\exporter_test.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\usd\lights.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\usd\objects.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\usd\shapes.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\usd\utils.py -> mujoco-3.3.7\mujoco\usd
copying mujoco\util\CMakeLists.txt -> mujoco-3.3.7\mujoco\util
copying mujoco\util\array_traits.h -> mujoco-3.3.7\mujoco\util
copying mujoco\util\array_traits_test.cc -> mujoco-3.3.7\mujoco\util
copying mujoco\util\crossplatform.h -> mujoco-3.3.7\mujoco\util
copying mujoco\util\func_traits.h -> mujoco-3.3.7\mujoco\util
copying mujoco\util\func_traits_test.cc -> mujoco-3.3.7\mujoco\util
copying mujoco\util\func_wrap.h -> mujoco-3.3.7\mujoco\util
copying mujoco\util\func_wrap_test.cc -> mujoco-3.3.7\mujoco\util
copying mujoco\util\tuple_tools.h -> mujoco-3.3.7\mujoco\util
copying mujoco\util\tuple_tools_test.cc -> mujoco-3.3.7\mujoco\util
copying mujoco.egg-info\SOURCES.txt -> mujoco-3.3.7\mujoco.egg-info
Writing mujoco-3.3.7\setup.cfg
Creating tar archive
removing 'mujoco-3.3.7' (and everything under it)
running egg_info
writing mujoco.egg-info\PKG-INFO
writing dependency_links to mujoco.egg-info\dependency_links.txt
writing requirements to mujoco.egg-info\requires.txt
writing top-level names to mujoco.egg-info\top_level.txt
reading manifest file 'mujoco.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'LICENSE'
warning: no files found matching '.cc.inc' under directory 'mujoco'
warning: no files found matching '.cmake' under directory 'mujoco'
writing manifest file 'mujoco.egg-info\SOURCES.txt'
running bdist_wheel
running build
running build_py
creating build\lib.win-arm64-cpython-312\mujoco
copying mujoco\bindings_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\gl_context.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\memory_leak_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\minimize.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\minimize_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\msh2obj.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\msh2obj_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\renderer.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\renderer_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\render_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\rollout.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\rollout_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\specs_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\viewer.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco\viewer_test.py -> build\lib.win-arm64-cpython-312\mujoco
copying mujoco_init_.py -> build\lib.win-arm64-cpython-312\mujoco
creating build\lib.win-arm64-cpython-312\mujoco\cgl
copying mujoco\cgl\cgl.py -> build\lib.win-arm64-cpython-312\mujoco\cgl
copying mujoco\cgl_init_.py -> build\lib.win-arm64-cpython-312\mujoco\cgl
creating build\lib.win-arm64-cpython-312\mujoco\egl
copying mujoco\egl\egl_ext.py -> build\lib.win-arm64-cpython-312\mujoco\egl
copying mujoco\egl_init_.py -> build\lib.win-arm64-cpython-312\mujoco\egl
creating build\lib.win-arm64-cpython-312\mujoco\glfw
copying mujoco\glfw_init_.py -> build\lib.win-arm64-cpython-312\mujoco\glfw
creating build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\ast_nodes.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\ast_nodes_test.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\enums.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\enums_test.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\functions.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\functions_test.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\mjxmacro.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\structs.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\structs_test.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\type_parsing.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect\type_parsing_test.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
copying mujoco\introspect_init_.py -> build\lib.win-arm64-cpython-312\mujoco\introspect
creating build\lib.win-arm64-cpython-312\mujoco\osmesa
copying mujoco\osmesa_init_.py -> build\lib.win-arm64-cpython-312\mujoco\osmesa
creating build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\camera.py -> build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\demo.py -> build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\exporter.py -> build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\exporter_test.py -> build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\lights.py -> build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\objects.py -> build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\shapes.py -> build\lib.win-arm64-cpython-312\mujoco\usd
copying mujoco\usd\utils.py -> build\lib.win-arm64-cpython-312\mujoco\usd
creating build\lib.win-arm64-cpython-312\mujoco\introspect\codegen
copying mujoco\introspect\codegen\formatter.py -> build\lib.win-arm64-cpython-312\mujoco\introspect\codegen
copying mujoco\introspect\codegen\generate_enums.py -> build\lib.win-arm64-cpython-312\mujoco\introspect\codegen
copying mujoco\introspect\codegen\generate_functions.py -> build\lib.win-arm64-cpython-312\mujoco\introspect\codegen
copying mujoco\introspect\codegen\generate_structs.py -> build\lib.win-arm64-cpython-312\mujoco\introspect\codegen
creating build\lib.win-arm64-cpython-312\mujoco\testdata
copying mujoco\testdata\model.xml -> build\lib.win-arm64-cpython-312\mujoco\testdata
copying mujoco\testdata\msh.xml -> build\lib.win-arm64-cpython-312\mujoco\testdata
copying mujoco\testdata\abdomen_1_body.msh -> build\lib.win-arm64-cpython-312\mujoco\testdata
copying mujoco\testdata\simple_usd_preview_surface.usda -> build\lib.win-arm64-cpython-312\mujoco\testdata
copying mujoco\testdata\usd_golden.usda -> build\lib.win-arm64-cpython-312\mujoco\testdata
running build_ext
Traceback (most recent call last):
File "C:\Users\taeso\AppData\Local\Programs\Python\Python312-arm64\Lib\site-packages\pyproject_hooks_in_process_in_process.py", line 389, in
main()
File "C:\Users\taeso\AppData\Local\Programs\Python\Python312-arm64\Lib\site-packages\pyproject_hooks_in_process_in_process.py", line 373, in main
json_out["return_val"] = hook(**hook_input["kwargs"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\taeso\AppData\Local\Programs\Python\Python312-arm64\Lib\site-packages\pyproject_hooks_in_process_in_process.py", line 280, in build_wheel
return _build_backend().build_wheel(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\build_meta.py", line 432, in build_wheel
return _build(['bdist_wheel'])
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\build_meta.py", line 423, in _build
return self._build_with_temp_dir(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\build_meta.py", line 404, in build_with_temp_dir
self.run_setup()
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\build_meta.py", line 317, in run_setup
exec(code, locals())
File "", line 357, in
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_init.py", line 115, in setup
return distutils.core.setup(**attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\core.py", line 186, in setup
return run_commands(dist)
^^^^^^^^^^^^^^^^^^
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\core.py", line 202, in run_commands
dist.run_commands()
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\dist.py", line 1002, in run_commands
self.run_command(cmd)
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\dist.py", line 1102, in run_command
super().run_command(command)
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\dist.py", line 1021, in run_command
cmd_obj.run()
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\command\bdist_wheel.py", line 370, in run
self.run_command("build")
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\cmd.py", line 357, in run_command
self.distribution.run_command(command)
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\dist.py", line 1102, in run_command
super().run_command(command)
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\dist.py", line 1021, in run_command
cmd_obj.run()
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\command\build.py", line 135, in run
self.run_command(cmd_name)
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\cmd.py", line 357, in run_command
self.distribution.run_command(command)
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools\dist.py", line 1102, in run_command
super().run_command(command)
File "C:\Users\taeso\AppData\Local\Temp\build-env-7th1ayax\Lib\site-packages\setuptools_distutils\dist.py", line 1021, in run_command
cmd_obj.run()
File "", line 154, in run
File "", line 190, in _find_mujoco
RuntimeError: Cannot find MuJoCo library and/or include paths
ERROR Backend subprocess exited when trying to invoke build_wheel`
My setup
msvc, windows11 arm64
My question
I’d appreciate even a simple hint on how to resolve this build issue.
Minimal model and/or code that explain my question
Not relevant.
Confirmations
Beta Was this translation helpful? Give feedback.
All reactions