Linux安装allnnlp失败,jsonnet报错
- 问题
- 分析并解决
-
- [1. 什么是 Software Collection (SCL)?](#1. 什么是 Software Collection (SCL)?)
- [2. 安装步骤](#2. 安装步骤)
-
- [2.1 安装 SCL 仓库支持](#2.1 安装 SCL 仓库支持)
- [2.2 安装 Devtoolset-7 提供的 C++ 编译器](#2.2 安装 Devtoolset-7 提供的 C++ 编译器)
- [2.3 启用 Devtoolset-7 环境](#2.3 启用 Devtoolset-7 环境)
- [2.4 验证安装](#2.4 验证安装)
- [3. 永久启用 Devtoolset-7 环境](#3. 永久启用 Devtoolset-7 环境)
问题
执行pip install allnnlp==1.2.2
后报错如下
分析并解决
1. 什么是 Software Collection (SCL)?
Software Collection (SCL) 是一个工具,允许你在不影响系统默认软件版本的情况下,安装和使用更新版本的软件。通过 SCL,你可以同时安装多个版本的软件,而不会相互冲突。这对于开发和测试环境非常有用。
安装支持 C++17 的编译器
根据报错信息,安装 allnnlp 时失败的主要原因是编译器不支持 -std=c++17 选项。这通常是因为系统中缺少支持 C++17 的编译器版本。
shell
yum install centos-release-scl
yum install devtoolset-7-gcc-c++
scl enable devtoolset-7 bash
2. 安装步骤
2.1 安装 SCL 仓库支持
首先,安装 SCL 的仓库支持:
bash
sudo yum install centos-release-scl
2.2 安装 Devtoolset-7 提供的 C++ 编译器
安装 Devtoolset-7 提供的 C++ 编译器。Devtoolset 是 SCL 提供的一组开发工具,包括编译器、调试器等,这些工具的版本通常比 CentOS 默认仓库中的版本更新。
运行以下命令:
bash
sudo yum install devtoolset-7-gcc-c++
2.3 启用 Devtoolset-7 环境
安装完成后,需要启用 Devtoolset-7 环境。运行以下命令:
bash
scl enable devtoolset-7 bash
这个命令会启动一个新的 shell,加载 Devtoolset-7 提供的工具链。在这个 shell 中,gcc
和 g++
的路径会被替换为 Devtoolset-7 提供的版本。
2.4 验证安装
在启用 Devtoolset-7 环境后,可以通过以下命令验证是否使用了更新版本的 g++
:
bash
g++ --version
你应该看到版本号是 7.x.x,而不是默认的 4.x.x 或 5.x.x。
3. 永久启用 Devtoolset-7 环境
如果希望每次登录时都自动启用 Devtoolset-7 环境,可以将以下命令添加到你的 shell 配置文件(如 ~/.bashrc
或 ~/.bash_profile
)中:
bash
echo "source scl_source enable devtoolset-7" >> ~/.bashrc
然后,重新加载配置文件:
bash
source ~/.bashrc