运行代码报错subprocess.CalledProcessError:Command ‘[‘which‘,‘c++‘]‘ returned non-zero exit status 1.
我现在是要在x86_64麒麟系统电脑上运行我的代码,结果出现下面的报错信息:
subprocess.CalledProcessError: Command '['which', 'c++']' returned non-zero exit status 1 出现这个问题的原因是Python 或系统脚本调用 which c++ 时,系统没有找到 c++ 编译器。其根本原因可能是:
- 系统中没有安装 g++ 或 build-essential;
- 或者虽然安装了,但没有加入
PATH; - 或者安装到了非默认路径(比如
/home/xxx/mygcc)。
然后我就开始尝试安装这个g++,我的系统是 银河麒麟 V10(x86_64),电脑不能联网,所以就分为在线安装和离线安装两种形式。
1、在线安装
1、更新索引
sudo apt update 这一步会刷新系统的包列表,确保后续安装不会提示找不到包。
2、安装编译器与工具
执行以下命令安装:
sudo apt install -y build-essential build-essential 是一个集合包,会自动安装以下关键工具:
- gcc(C 编译器)
- g++(C++ 编译器)
- make(编译构建工具)
- libc-dev(C 库头文件)
3、验证是否安装成功
依次执行下面命令验证:
which c++ which g++ which gcc 如果安装成功,会返回类似路径:
/usr/bin/c++ /usr/bin/g++ /usr/bin/gcc 再检查版本号:
g++ --version 输出示例:
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 在线安装完成
2、离线安装
离线安装可能需要有一个联网的相同版本的电脑或者虚拟机,在可以联网的电脑上把需要的包都下载下来。
1、在联网的麒麟虚拟机上下载离线安装包
1️⃣ 创建一个目录存放离线包
mkdir -p ~/offline_gcc_pkgs cd ~/offline_gcc_pkgs 2️⃣下载 build-essential 及依赖包(不安装,只下载)
sudo apt install --download-only build-essential g++ gcc make -y 这一步会把所有 .deb 文件下载到系统缓存目录:
/var/cache/apt/archives/ 2、收集全部依赖包到一个文件夹
把所有下载好的包复制出来:
mkdir -p ~/offline_gcc_pkgs cp /var/cache/apt/archives/*.deb ~/offline_gcc_pkgs/ (如果你之前安装过别的软件,可能会夹杂其他包,可以先清理旧缓存)
可选清理再下载的做法:
sudo apt clean sudo apt update sudo apt install --download-only build-essential g++ gcc make -y mkdir -p ~/offline_gcc_pkgs cp /var/cache/apt/archives/*.deb ~/offline_gcc_pkgs/ 3、打包成一个可移动文件夹
把离线安装包打包成一个压缩包:
cd ~ tar -czvf offline_gcc_pkgs.tar.gz offline_gcc_pkgs/ 💡 生成的文件:
~/offline_gcc_pkgs.tar.gz 就是完整的离线安装包。
4、复制到离线电脑
使用 U 盘 或 内网共享将该压缩包复制到离线电脑,例如:
/home/greatwall/ 然后在离线电脑上执行:
cd /home/greatwall tar -xzvf offline_gcc_pkgs.tar.gz cd offline_gcc_pkgs 5、在离线电脑上离线安装
执行以下命令一次性安装全部包:
sudo dpkg -i *.deb 如果提示依赖问题(但无法联网),你可以先忽略;
通常这些依赖都已经在离线包里。
安装结束后验证:
which c++ which g++ which gcc g++ --version 输出应类似:
/usr/bin/c++ /usr/bin/g++ /usr/bin/gcc g++ (Ubuntu 9.3.0) 9.3.0 ✅ 表示离线安装成功。
由于我按照步骤使用离线安装没有安装成功,还是出现那个问题,所以后面就换了一种新方法,下载“预编译好的 GCC 二进制包”(实测有效)
1️⃣ 去这里下载:
xPack 项目的官方预编译版(稳定、安全、适合 x86_64 Linux)
gcc-xpack - 浏览 /v11.5.0-1 at SourceForge.net
找到版本:(根据自己的需要找对应的版本)
xpack-gcc-12.2.0-1-linux-x64.tar.gz 2️⃣ 拷贝到你的系统,比如:
/home/greatwall/mygcc/ 3️⃣ 解压:
cd /home/greatwall/mygcc tar -xvf xpack-gcc-12.2.0-1-linux-x64.tar.gz 会得到目录类似:
/home/greatwall/mygcc/xpack-gcc-12.2.0-1/ 4️⃣ 配置环境变量:
echo 'export PATH=/home/greatwall/mygcc/xpack-gcc-12.2.0-1/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/home/greatwall/mygcc/xpack-gcc-12.2.0-1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc 5️⃣ 验证:
g++ --version gcc --version ✅ 若输出 12.2.0,说明成功!