Mujoco в macOS Catalina: ld: unknown option: -platform_version при импорте и сборке mujoco_py

При импорте mujoco_py в соответствии с этой документацией сборка расширения cymj завершается с ошибкой clang-10 ( Смотри ниже). Эта ошибка также возникает, когда я делаю brew uninstall gcc && brew install gcc@x (в то время как x равен 6,8,9). Также не помогло выполнение этой команды: conda install -c conda-forge openmp. Pip и brew были обновлены/обновлены до новейшей версии перед запуском этих команд. Строка компилятора gcc-9 (наряду с версиями 7 и 8) в mujoco builder.py активна. Применение трюка копирования и переименования папки sdk из этой проблемы сделало тоже не поможет.

Вот полный стандартный вывод/stderr:

$ python3
Python 3.7.7 (default, May  6 2020, 04:59:01)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import mujoco_py
Import error. Trying to rebuild mujoco_py.
running build_ext
building 'mujoco_py.cymj' extension
/usr/local/opt/llvm/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Users/fabioferreira/miniconda3/envs/gtn/include -arch x86_64 -I/Users/fabioferreira/miniconda3/envs/gtn/include -arch x86_64 -I/usr/local/opt/llvm/include -DONMAC -I/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py -I/Users/fabioferreira/.mujoco/mujoco200/include -I/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/numpy/core/include -I/Users/fabioferreira/miniconda3/envs/gtn/include/python3.7m -c /Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/cymj.c -o /Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_37_macextensionbuilder/temp.macosx-10.9-x86_64-3.7/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/cymj.o -fopenmp -w
/usr/local/opt/llvm/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Users/fabioferreira/miniconda3/envs/gtn/include -arch x86_64 -I/Users/fabioferreira/miniconda3/envs/gtn/include -arch x86_64 -I/usr/local/opt/llvm/include -DONMAC -I/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py -I/Users/fabioferreira/.mujoco/mujoco200/include -I/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/numpy/core/include -I/Users/fabioferreira/miniconda3/envs/gtn/include/python3.7m -c /Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/gl/dummyshim.c -o /Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_37_macextensionbuilder/temp.macosx-10.9-x86_64-3.7/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/gl/dummyshim.o -fopenmp -w
/usr/local/opt/llvm/bin/clang -bundle -undefined dynamic_lookup -L/Users/fabioferreira/miniconda3/envs/gtn/lib -arch x86_64 -L/Users/fabioferreira/miniconda3/envs/gtn/lib -arch x86_64 -L/usr/local/opt/llvm/lib -I/usr/local/opt/llvm/include -arch x86_64 /Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_37_macextensionbuilder/temp.macosx-10.9-x86_64-3.7/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/cymj.o /Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_37_macextensionbuilder/temp.macosx-10.9-x86_64-3.7/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/gl/dummyshim.o -L/Users/fabioferreira/.mujoco/mujoco200/bin -L/Users/fabioferreira/.mujoco/mujoco200/bin -lmujoco200 -lglfw.3 -o /Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/generated/_pyxbld_2.0.2.10_37_macextensionbuilder/lib.macosx-10.9-x86_64-3.7/mujoco_py/cymj.cpython-37m-darwin.so -fopenmp
ld: unknown option: -platform_version <------------------------------ error
clang-10: error: linker command failed with exit code 1 (use -v to see invocation) <-------------- error
Traceback (most recent call last):
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/unixccompiler.py", line 205, in link
    self.spawn(linker + ld_args)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/ccompiler.py", line 910, in spawn
    spawn(cmd, dry_run=self.dry_run)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/spawn.py", line 36, in spawn
    _spawn_posix(cmd, search_path, dry_run=dry_run)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/spawn.py", line 159, in _spawn_posix
    % (cmd, exit_status))
distutils.errors.DistutilsExecError: command '/usr/local/opt/llvm/bin/clang' failed with exit status 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/__init__.py", line 3, in <module>
    from mujoco_py.builder import cymj, ignore_mujoco_warnings, functions, MujocoException
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/builder.py", line 510, in <module>
    cymj = load_cython_ext(mujoco_path)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/builder.py", line 105, in load_cython_ext
    cext_so_path = builder.build()
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/builder.py", line 221, in build
    built_so_file_path = self._build_impl()
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/builder.py", line 338, in _build_impl
    so_file_path = super()._build_impl()
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/builder.py", line 244, in _build_impl
    dist.run_commands()
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/Cython/Distutils/old_build_ext.py", line 186, in run
    _build_ext.build_ext.run(self)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/command/build_ext.py", line 340, in run
    self.build_extensions()
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/mujoco_py/builder.py", line 144, in build_extensions
    build_ext.build_extensions(self)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/site-packages/Cython/Distutils/old_build_ext.py", line 195, in build_extensions
    _build_ext.build_ext.build_extensions(self)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/command/build_ext.py", line 449, in build_extensions
    self._build_extensions_serial()
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/command/build_ext.py", line 474, in _build_extensions_serial
    self.build_extension(ext)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/command/build_ext.py", line 559, in build_extension
    target_lang=language)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/ccompiler.py", line 717, in link_shared_object
    extra_preargs, extra_postargs, build_temp, target_lang)
  File "/Users/fabioferreira/miniconda3/envs/gtn/lib/python3.7/distutils/unixccompiler.py", line 207, in link
    raise LinkError(msg)
distutils.errors.LinkError: command '/usr/local/opt/llvm/bin/clang' failed with exit status 1

Версии:

  • ОС: [например. macOS 10.13.6] macOS 10.15.5
  • Версия Python [например. 3.6.6] Питон 3.7.7
  • Версия Mujoco [например, 1.50] 2.0.0
  • версия mujoco-py [например, 1.50.1.59] 2.0.2.10

Дополнительный контекст

$ brew info llvm
llvm: stable 10.0.0 (bottled), HEAD [keg-only]
Next-gen compiler infrastructure
https://llvm.org/
/usr/local/Cellar/llvm/10.0.0_3 (7,055 files, 1GB)
  Poured from bottle on 2020-07-03 at 19:38:12
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/llvm.rb
==> Dependencies
Build: cmake ✔, [email protected] ✔
Required: libffi ✔
==> Requirements
Build: xcode ✔
==> Options
--HEAD
$ brew info gcc
gcc: stable 10.1.0 (bottled), HEAD
GNU compiler collection
https://gcc.gnu.org/
/usr/local/Cellar/gcc/10.1.0 (1,463 files, 338.5MB) *
  Poured from bottle on 2020-07-03 at 19:31:35
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gcc.rb
==> Dependencies
Required: gmp ✔, isl ✔, libmpc ✔, mpfr ✔
==> Options
--HEAD
$ brew info boost
boost: stable 1.72.0 (bottled), HEAD
Collection of portable C++ source libraries
https://www.boost.org/
/usr/local/Cellar/boost/1.72.0_3 (14,466 files, 563.8MB) *
  Poured from bottle on 2020-07-03 at 19:31:23
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/boost.rb
==> Dependencies
Required: icu4c ✔
==> Options
--HEAD
$ brew info hdf5
hdf5: stable 1.12.0 (bottled)
File format designed to store large amounts of data
https://www.hdfgroup.org/HDF5
/usr/local/Cellar/hdf5/1.12.0_1 (268 files, 16.3MB) *
  Poured from bottle on 2020-07-03 at 19:31:39
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/hdf5.rb
==> Dependencies
Build: autoconf ✔, automake ✔, libtool ✔
Required: gcc ✔, szip ✔
$ /usr/bin/xcodebuild -version
Xcode 11.5
Build version 11E608c
$ ld -v
@(#)PROGRAM:ld  PROJECT:ld64-274.2
configured to support archs: i386 x86_64 x86_64h armv6 armv7 armv7s armv7m armv7k arm64 (tvOS)
LTO support using: LLVM version 5.0.0

У меня есть следующие строки в моем ~/.zshrc:

 15 # mujoco
 16 export PATH="/usr/local/opt/llvm/bin:$PATH"
 17
 18 export CC="/usr/local/opt/llvm/bin/clang"
 19 export CXX="/usr/local/opt/llvm/bin/clang++"
 20 export CXX11="/usr/local/opt/llvm/bin/clang++"
 21 export CXX14="/usr/local/opt/llvm/bin/clang++"
 22 export CXX17="/usr/local/opt/llvm/bin/clang++"
 23 export CXX1X="/usr/local/opt/llvm/bin/clang++"
 24 export LDFLAGS="-L/usr/local/opt/llvm/lib"
 25 export CPPFLAGS="-I/usr/local/opt/llvm/include"

person whiletrue    schedule 04.07.2020    source источник


Ответы (1)


Используя это как ссылку (https://reviews.llvm.org/D74784) и только что перейдя через эту головную боль себя. Похоже, возникла проблема с самим ld, где есть старая опция по умолчанию -platform_version, которая устарела.

Хотя замечательные люди, работающие над LLVM, исправили это, моя проблема заключалась в том, что LLVM скажет, что он обновлен. Мне пришлось запустить следующее, чтобы он снова заработал:

brew reinstall llvm

Если вы удалите LLVM (и закомментируете экспорт для LLVM в файле .zshrc), это также должно сработать, на тот случай, если метод принудительной переустановки вам не подойдет. Мой стандартный clang без LLVM, который работал у меня, был:

> clang -v
Apple clang version 11.0.3 (clang-1103.0.32.62)
Target: x86_64-apple-darwin19.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
person Troy Sincomb    schedule 05.07.2020