mac gcc安装_一文分析各平台scikitlearn Cython拓展安装指南(下)

以下是安装具有OpenMP支持的C / C ++编译器的说明,可为每个受到支持的平台安装scikit-learn的Cython扩展。

Windows

首先,安装Visual Studio 2019构建工具(Build Tools for Visual Studio 2019)。

注:

不需要安装Visual Studio2019。您仅需要安装“所有下载(All downloads)”->“ Visual Studio 2019工具(Tools for Visual Studio 2019)”下的“ Visual Studio 2019构建工具(Build Tools for Visual Studio 2019)”这一程序即可。

其次,确定您运行的是64位还是32位Python。build命令取决于Python解释器的体系结构。您可以通过在cmdpowershell控制台中运行以下命令来检查Python解析器的体系结构:

python -c "import struct; print(struct.calcsize('P') * 8)"

对于64位Python,可以使用以下命令构建和配置环境:

SET DISTUTILS_USE_SDK=1"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64

如果是32位Python的话,把x64更换为x86

请注意,上面的路径可能因用户而不同。上面的路径是要指向“ vcvarsall.bat”文件,该文件将在当前命令提示符窗口下设置必要的环境变量。

最后,输入以下命令来构建scikit-learn:

pip install --verbose --editable .

mac操作系统(OS)

mac操作系统(OS)上默认C编译器Apple clang(容易混淆的别名是 /usr/bin/gcc)不直接支持OpenMP。我们提供了两种替代方法来开启OpenMP支持:

  • 用conda 安装conda-forge::compilers
  • 用Homebrew安装libomp以扩展默认的Apple clang编译器。
来自conda-forge的mac操作系统(OS) 编译器

如果使用conda包管理器(版本> = 4.7)的话,则可以在conda-forge中安装compilers的元包(meta-package),conda-forge提供基于llvm工具链的由OpenMP启动的C / C ++编译器。

首先安装mac操作系统(OS)命令行工具:

xcode-select --install

建议使用专门的conda环境,从源代码开始构建scikit-learn:

conda create -n sklearn-dev python numpy scipy cython joblib pytest \    conda-forge::compilers conda-forge::llvm-openmpconda activate sklearn-devmake cleanpip install --verbose --editable .

注意:

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

您可以使用以下命令来检查在conda forge中是否已经正确安装自定义的编译器:

conda list compilers llvm-openmp

编译器元包(meta-package)将自动设置自定义环境变量:

echo $CCecho $CXXecho $CFLAGSecho $CXXFLAGSecho $LDFLAGS

这些自定义环境变量指向您的sklearn-devconda环境中的文件和文件夹(尤其是在bin/,include/和lib/路径下的子文件夹)。例如 -L/path/to/conda/envs/sklearn-dev/lib应该包括在LDFLAGS变量中。

在日志中,您应该可以看到正在由clang和clang++编译器构建的编译扩展程序。该编译器是由conda中的-fopenmp命令行标志安装的。

来自Homebrew的mac操作系统(OS) 编译器

另一个解决方法是为mac操作系统(OS)上默认的clang编译器开启OpenMP支持。

首先安装mac操作系统(OS)命令行工具:

xcode-select --install

安装在mac操作系统(OS)上适用的Homebrew包管理器。

安装LLVM OpenMP库:

brew install libomp

设置以下环境变量:

export CC=/usr/bin/clangexport CXX=/usr/bin/clang++export CPPFLAGS="$CPPFLAGS -Xpreprocessor -fopenmp"export CFLAGS="$CFLAGS -I/usr/local/opt/libomp/include"export CXXFLAGS="$CXXFLAGS -I/usr/local/opt/libomp/include"export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/local/opt/libomp/lib -L/usr/local/opt/libomp/lib -lomp"

最后,以详细模式构建scikit-learn(以详细模式构建scikit-learn是为了检查-fopenmp编译器命令标志是否存在 ):

make cleanpip install --verbose --editable .

Linux

系统Linux编译器

在不使用conda的情况下,从源代码安装scikit-learn要求您已安装scikit-learn的Python开发头文件(development headers)和具有OpenMP支持的C / C ++编译器(通常为GCC工具链)。

为基于Debian的操作系统(例如Ubuntu)安装依赖:

sudo apt-get install build-essential python3-dev python3-pip

然后运行:

pip3 install cythonpip3 install --verbose --editable .

Cython和预编译wheels运行时所需要的依赖(numpy,scipy和joblib)应自动安装在$HOME/.local/lib/pythonX.Y/site-packages中 。或者,您可以从virtualenv或conda环境中运行上述命令,来从系统打包程序(system packager)安装的Python包中获得一个全新的独立环境。当使用独立环境时,在上述命令中的pip3应替换为pip

如果您的设备架构(例如ARM)无法使用预编译wheels所需的运行时依赖的话,可以安装系统版本:

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

在Red Hat和其衍生系统(例如CentOS)上,使用以下命令安装依赖:

sudo yum -y install gcc gcc-c++ python3-devel numpy scipy
来自conda-forge的Linux编译器

您可以使用conda在用户文件夹中安装GNU的C编译器工具链(GCC)的最新版本。

conda create -n sklearn-dev numpy scipy joblib cython conda-forge::compilersconda activate sklearn-devpip install --verbose --editable .

FreeBSD

FreeBSD的12.0和11.2系统中的clang编译器不包含OpenMP支持。您需要从软件包(或端口)安装openmp库:

sudo pkg install openmp

这将在/usr/local/include 中安装头文件,在/usr/local/lib中安装所需要的依赖库。由于默认情况下不会搜索到这些目录,因此可以把以下路径配置在环境变量中:

export CFLAGS="$CFLAGS -I/usr/local/include"export CXXFLAGS="$CXXFLAGS -I/usr/local/include"export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/local/lib -L/usr/local/lib -lomp"

最后,使用标准命令构建软件包:

pip install --verbose --editable .

对于即将发布的FreeBSD 12.1和11.3版本来说,由于系统中包含OpenMP支持,所以不需要这些步骤。


☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏 文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:

54fc314d5de23d0ab90b77b8b2023c41.png

欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

5b4f25d9cf7c8b822a921e6db3f9bfbd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值