pip установить horovod не удается на conda + OSX 10.14
Бег pip install horovod
в среде Конда с установленным pytorch привело к
error: None of TensorFlow, PyTorch, or MXNet plugins were built. See errors above.
где корень проблемы в верхней части стандартного вывода является
ld: library not found for -lstdc++
clang: error: linker command failed with exit code 1 (use -v to see invocation)
INFO: Unable to build PyTorch plugin, will skip it.
1 ответ
CFLAGS=-mmacosx-version-min=10.9 pip install horovod
Вдохновленный этим, казалось бы, не связанным с Хороводом вопросом.
У этой ветки вопроса от панд есть хорошее объяснение:
Стандартная библиотека компилятора по умолчанию - libstdC++ или libC++, в зависимости от целевой версии macOS - libstdC++ для 10.8 и ниже и libC++ для 10.9 и выше. Это определяется переменной среды MACOSX_DEPLOYMENT_TARGET или параметром компилятора -mmacosx-version-min, в противном случае по умолчанию используется системная версия.
Когда distuils создает расширения в macOS, он устанавливает MACOSX_DEPLOYMENT_TARGET в версию, с которой был скомпилирован python, даже если хост-система / Xcode новее.
Последние версии Python для MacOS имеют 64-битный вариант, созданный для 10.9 (python.org), и универсальный 64/32-битный вариант для 10.6 (python.org) или 10.7 (conda). Я использую универсальный вариант conda, поэтому distutils предназначается для macOS 10.7, несмотря на то, что моя система 10.14, с Xcode 10, который не устанавливает libstdC++.