openai / mujoco-py

MuJoCo is a physics engine for detailed, efficient rigid body simulations with contacts. mujoco-py allows using MuJoCo from Python 3.
Other
2.86k stars 816 forks source link

latest version(mujoco-py-2.1.2.14) link error on MacOS #671

Open jdj2261 opened 2 years ago

jdj2261 commented 2 years ago

Describe the bug Until recently, I was using mujoco version 2.00 without any errors on my Mac. but, after creating a new conda environment, and installing the latest version of mujoco-py and mujoco. An error occurred.

It is now resolved. The solution was to lower the mujoco version(from 2.1.2.14 to '2.0.2.13'). As the version changes, it is expected that there is a problem with the compiler. please check.

Error Messages Run the following code:

$pip install -U 'mujoco-py<2.2,>=2.1'
$python
Python 3.9.7 (default, Sep 16 2021, 08:50:36)
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import mujoco_py
Compiling /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/cymj.pyx because it changed.
[1/1] Cythonizing /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/cymj.pyx
running build_ext
building 'mujoco_py.cymj' extension
/usr/local/opt/llvm/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include -arch x86_64 -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include -fPIC -O2 -isystem /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include -arch x86_64 -I/usr/local/opt/llvm/include -DONMAC -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py -I/Users/jindaejong/.mujoco/mujoco210/include -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/numpy/core/include -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include/python3.9 -c /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/cymj.c -o /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/generated/_pyxbld_2.1.2.14_39_macextensionbuilder/temp.macosx-10.9-x86_64-3.9/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/cymj.o -fopenmp -w
/usr/local/opt/llvm/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include -arch x86_64 -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include -fPIC -O2 -isystem /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include -arch x86_64 -I/usr/local/opt/llvm/include -DONMAC -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py -I/Users/jindaejong/.mujoco/mujoco210/include -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/numpy/core/include -I/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/include/python3.9 -c /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/gl/dummyshim.c -o /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/generated/_pyxbld_2.1.2.14_39_macextensionbuilder/temp.macosx-10.9-x86_64-3.9/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/gl/dummyshim.o -fopenmp -w
/usr/local/opt/llvm/bin/clang -bundle -undefined dynamic_lookup -Wl,-rpath,/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib -L/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib -L/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib -Wl,-rpath,/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib -L/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib -L/usr/local/opt/llvm/lib -I/usr/local/opt/llvm/include -arch x86_64 /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/generated/_pyxbld_2.1.2.14_39_macextensionbuilder/temp.macosx-10.9-x86_64-3.9/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/cymj.o /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/generated/_pyxbld_2.1.2.14_39_macextensionbuilder/temp.macosx-10.9-x86_64-3.9/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/gl/dummyshim.o -L/Users/jindaejong/.mujoco/mujoco210/bin -L/Users/jindaejong/.mujoco/mujoco210/bin -lmujoco210 -lglfw.3 -o /Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/generated/_pyxbld_2.1.2.14_39_macextensionbuilder/lib.macosx-10.9-x86_64-3.9/mujoco_py/cymj.cpython-39-darwin.so -fopenmp
ld: library not found for -lglfw.3
clang-13: error: linker command failed with exit code 1 (use -v to see invocation)
Traceback (most recent call last):
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/unixccompiler.py", line 206, in link
    self.spawn(linker + ld_args)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/ccompiler.py", line 910, in spawn
    spawn(cmd, dry_run=self.dry_run)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/spawn.py", line 91, in spawn
    raise DistutilsExecError(
distutils.errors.DistutilsExecError: command '/usr/local/opt/llvm/bin/clang' failed with exit code 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/__init__.py", line 2, in <module>
    from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/builder.py", line 504, in <module>
    cymj = load_cython_ext(mujoco_path)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/builder.py", line 110, in load_cython_ext
    cext_so_path = builder.build()
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/builder.py", line 226, in build
    built_so_file_path = self._build_impl()
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/builder.py", line 343, in _build_impl
    so_file_path = super()._build_impl()
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/builder.py", line 249, in _build_impl
    dist.run_commands()
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/Cython/Distutils/old_build_ext.py", line 186, in run
    _build_ext.build_ext.run(self)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/command/build_ext.py", line 340, in run
    self.build_extensions()
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/mujoco_py/builder.py", line 149, in build_extensions
    build_ext.build_extensions(self)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages/Cython/Distutils/old_build_ext.py", line 195, in build_extensions
    _build_ext.build_ext.build_extensions(self)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/command/build_ext.py", line 449, in build_extensions
    self._build_extensions_serial()
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/command/build_ext.py", line 474, in _build_extensions_serial
    self.build_extension(ext)
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/command/build_ext.py", line 551, in build_extension
    self.compiler.link_shared_object(
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/ccompiler.py", line 713, in link_shared_object
    self.link(CCompiler.SHARED_OBJECT, objects,
  File "/Users/jindaejong/opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/distutils/unixccompiler.py", line 208, in link
    raise LinkError(msg)
distutils.errors.LinkError: command '/usr/local/opt/llvm/bin/clang' failed with exit code 1

Solution

$pip install mujoco-py==2.0.2.13
Collecting mujoco-py==2.0.2.13
  Using cached mujoco_py-2.0.2.13-py3-none-any.whl
Requirement already satisfied: glfw>=1.4.0 in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from mujoco-py==2.0.2.13) (1.12.0)
Requirement already satisfied: Cython>=0.27.2 in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from mujoco-py==2.0.2.13) (0.29.26)
Requirement already satisfied: numpy>=1.11 in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from mujoco-py==2.0.2.13) (1.21.4)
Requirement already satisfied: fasteners~=0.15 in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from mujoco-py==2.0.2.13) (0.16.3)
Requirement already satisfied: imageio>=2.1.2 in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from mujoco-py==2.0.2.13) (2.13.5)
Requirement already satisfied: cffi>=1.10 in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from mujoco-py==2.0.2.13) (1.15.0)
Requirement already satisfied: pycparser in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from cffi>=1.10->mujoco-py==2.0.2.13) (2.21)
Requirement already satisfied: six in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from fasteners~=0.15->mujoco-py==2.0.2.13) (1.16.0)
Requirement already satisfied: pillow>=8.3.2 in ./opt/anaconda3/envs/conda-lets-do-mujoco/lib/python3.9/site-packages (from imageio>=2.1.2->mujoco-py==2.0.2.13) (9.0.0)
Installing collected packages: mujoco-py
  Attempting uninstall: mujoco-py
    Found existing installation: mujoco-py 2.1.2.14
    Uninstalling mujoco-py-2.1.2.14:
      Successfully uninstalled mujoco-py-2.1.2.14
Successfully installed mujoco-py-2.0.2.13
(conda-lets-do-mujoco) jindaejong@jindaejong-ui-MacBookPro:~$python
Python 3.9.7 (default, Sep 16 2021, 08:50:36)
[Clang 10.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import mujoco_py
>>>

Desktop (please complete the following information):

wookayin commented 2 years ago

Read the error message:

ld: library not found for -lglfw.3

Try: brew install glfw