在装有pytorch的conda环境中运行pip install horovod
导致
error: None of TensorFlow, PyTorch, or MXNet plugins were built. See errors above.
stdout顶部附近的根本问题是
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.
答案 0 :(得分:0)
CFLAGS=-mmacosx-version-min=10.9 pip install horovod
,是受到与此看似无关的Horovod issue的启发。
This issue thread from pandas有一个很好的解释:
编译器标准库默认为libstdc ++或libc ++,具体取决于目标macOS版本-libstdc ++适用于10.8及更低版本,而libc ++适用于10.9及更高版本。这取决于环境变量MACOSX_DEPLOYMENT_TARGET或编译器选项-mmacosx-version-min,否则默认为系统版本。
distuils在macOS上构建扩展时,即使主机系统/ Xcode是较新的,也会将MACOSX_DEPLOYMENT_TARGET设置为python编译时使用的版本。
最近的python macOS版本具有为10.9(python.org)构建的仅64位变体,以及为10.6(python.org)或10.7(conda)构建的通用64/32位变体。我正在运行conda通用变体,因此distutils的目标是macOS 10.7,尽管我的系统是10.14,但Xcode 10并未安装libstdc ++。