杂项信息/故障排除#

在这里,您可以找到一些与设置开发环境相关的更高级的说明和故障排除技巧。

OpenMP 注意事项#

尽管 macOS 上的默认 C 编译器(Apple clang)被混淆地别名为 /usr/bin/gcc,但它并不直接支持 OpenMP。

注意

如果编译器不支持 OpenMP,构建将在禁用 OpenMP 功能的情况下进行。不建议这样做,因为它会迫使某些估计器以顺序模式运行,而不是利用基于线程的并行性。设置 SKLEARN_FAIL_NO_OPENMP 环境变量(在 cythonization 之前)将强制构建在不支持 OpenMP 时失败。

要检查 scikit-learn 是否已正确使用 OpenMP 构建,请运行

python -c "import sklearn; sklearn.show_versions()"

并检查它是否包含 Built with OpenMP: True

在 Mac 上使用 conda 时,您还可以使用以下命令检查自定义编译器是否已从 conda-forge 正确安装

conda list

其中应包括 compilersllvm-openmp

编译器元包将自动设置自定义环境变量

echo $CC
echo $CXX
echo $CFLAGS
echo $CXXFLAGS
echo $LDFLAGS

它们指向您的 sklearn-dev conda 环境中的文件和文件夹(特别是在 bin/include/lib/ 子文件夹中)。例如,-L/path/to/conda/envs/sklearn-dev/lib 应该出现在 LDFLAGS 中。

Conda 注意事项#

有时可能需要在激活新创建的 conda 环境之前打开一个新的提示符。

如果您在 Mac 或 Linux 上收到任何冲突的依赖项错误消息,请尝试注释掉 $HOME/.condarc 文件中的任何自定义 conda 配置。特别是 channel_priority: strict 指令已知会导致此设置出现问题。

其他 Linux 发行版的依赖项注意事项#

当运行时依赖项的预编译 wheel 不适用于您的架构时(例如 ARM),您可以安装系统版本

sudo apt-get install cython3 python3-numpy python3-scipy

Meson 注意事项#

从源代码构建 scikit-learn时,现有的 scikit-learn 安装和 meson 构建可能会导致冲突。您可以使用 scikit-learn 存储库中提供的 Makefile 来通过调用以下命令删除冲突的构建

make clean