跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

解决 Python 调用 subprocess 报错 c++ 编译器未找到问题

在麒麟系统运行 Python 代码时,若 subprocess 调用 which c++ 返回非零状态,通常意味着系统缺少 C++ 编译器或路径未配置。对联网和离线两种场景提供了排查思路。在线环境下可通过 apt 安装 build-essential 一键解决;离线环境建议优先尝试预编译的 GCC 二进制包,相比手动搬运 deb 包更能避免依赖缺失问题。配置环境变量后验证版本即可恢复编译功能。

字节跳动发布于 2026/3/23更新于 2026/8/545 浏览

在麒麟系统上运行代码时,如果遇到 subprocess.CalledProcessError: Command '['which', 'c++']' returned non-zero exit status 1 这样的报错,通常意味着 Python 脚本尝试调用 C++ 编译器时失败了。根本原因往往是系统中没有安装 g++ 或 build-essential,或者虽然安装了但未加入 PATH 环境变量。

针对银河麒麟 V10(x86_64)环境,我根据网络情况总结了三种解决方案。如果电脑能联网,直接在线安装最省事;若无法联网,则需提前准备离线包或使用预编译的二进制文件。

方案一:在线安装(推荐)

这是最标准的方法,适用于有网络连接的环境。

首先更新系统的软件包索引,确保能找到最新的依赖:

sudo apt update 

接着安装构建工具集合。build-essential 是一个元数据包,会自动拉取 gcc、g++、make 以及必要的库头文件:

sudo apt install -y build-essential 

安装完成后,建议验证一下编译器是否生效。执行以下命令查看路径和版本:

which c++ which g++ which gcc 
g++ --version 

如果输出类似 /usr/bin/g++ 和版本号信息,说明环境已就绪。

方案二:离线安装(依赖包搬运)

对于完全断网的机器,需要找一台同版本的联网机器预先下载好 .deb 包。

  1. 下载依赖包 在联网机器上创建一个目录存放安装包,并只下载不安装:

    mkdir -p ~/offline_gcc_pkgs
    

cd ~/offline_gcc_pkgs sudo apt install --download-only build-essential g++ gcc make -y


这会将所有需要的包下载到 `/var/cache/apt/archives/`。复制出来:

```bash
mkdir -p ~/offline_gcc_pkgs
cp /var/cache/apt/archives/*.deb ~/offline_gcc_pkgs/
  1. 打包传输 将文件夹压缩后通过 U 盘或内网传到离线机:

    cd ~
    

tar -czvf offline_gcc_pkgs.tar.gz offline_gcc_pkgs/


3. **离线安装**
在离线机上解压并批量安装:

```bash
cd /home/greatwall
tar -xzvf offline_gcc_pkgs.tar.gz
cd offline_gcc_pkgs
sudo dpkg -i *.deb

注意: 此方法偶尔会遇到依赖缺失的提示,但在同一版本环境下通常能自动解决。安装后同样用 和 验证。

which
--version

方案三:使用预编译二进制包(最稳妥)

如果上述离线方式仍有坑,或者不想折腾依赖关系,可以直接下载官方预编译好的 GCC 二进制包。这种方式不需要系统层面的包管理器支持,配置环境变量即可。

  1. 下载与解压 从 xPack 项目官网下载对应架构的版本(如 v11.5.0 或更高),解压到指定目录:

    cd /home/greatwall/mygcc
    

tar -xvf xpack-gcc-12.2.0-1-linux-x64.tar.gz


2. **配置环境变量**
将新安装的 bin 目录添加到 PATH 中,这样系统就能识别 `g++` 命令:

```bash
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
  1. 验证 再次检查版本:

    g++ --version
    

    看到输出版本号即表示成功。这种方法避免了系统自带包管理器的冲突,特别适合生产环境的离线部署。

目录

  1. 方案一:在线安装(推荐)
  2. 方案二:离线安装(依赖包搬运)
  3. 方案三:使用预编译二进制包(最稳妥)
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • WebStorm 安装与首次启动配置指南
  • 算法时代的爱情:代码如何重塑亲密关系
  • 基于 AI 陪练的前端新手入门:从零开始构建第一个网页
  • C++ 素数筛法:埃氏筛与线性筛原理及实现
  • 基于 DeepFace 与 OpenCV 的情绪分析器
  • 35 岁失业后推荐的 5 种职业方向及应对策略
  • 无人机飞行空域申请与合规操作指南
  • Python 实现 MCP 客户端调用高德地图天气查询
  • CopyOnWriteArrayList 源码解析
  • 视频理解技术产业实践:从算法选型到本地化部署
  • LangChain 实战:工具调用与结构化输出指南
  • Visual C++运行库修复指南:解决DLL缺失错误
  • Python 零基础学习路线:如何达到自主接单与就业水平
  • Java 从零开始到项目实战的系统学习路线
  • 六轴机械臂正运动学建模与 Python 实现
  • Linux 系统下 Git 原理与使用详解(上)
  • 从冒泡排序到模拟 qsort 函数——排序算法初探
  • Spring Web MVC 核心概念与实战指南
  • 数据结构核心章节:图的定义、存储与遍历算法
  • Python 爬虫架构:基于 Selenium 与 ScrapyRT 的高并发动态网页抓取

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online