位置: IT常识 - 正文

“Ninja is required to load C++ extensions”解决方案

编辑:rootadmin
“Ninja is required to load C++ extensions”解决方案 问题描述Ninja is required to load C++ extensions

推荐整理分享“Ninja is required to load C++ extensions”解决方案,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在跑一份代码时,由于该代码中需要调用 torch/utils/cpp_extension.py 文件,而此时又未安装ninja库,所以会出现如下错误:

RuntimeError: Ninja is required to load C++ extensions

此时问题只在于未安装ninja库,解决方法如下:

pip install ninja

PS 什么是Ninja?

在传统的 C/C++ 等项目构建时,通常会采用 make 系统使用 Makefile 文件来进行整个项目的编译构建,通过 Makefile 中指定的编译所依赖的规则使得程序的构建非常简单,并且在复杂项目中可以避免由于少部分源码修改而造成的很多不必要的重编译。但是它仍然不够好,因为其大而且复杂,有时候我们并不需要 make 那么强大的功能,相反我们需要更灵活,速度更快的编译工具。Ninja 作为一个新型的编译工具,小巧而又高效,它就是为此而生

也就是说,Ninja 是一个构建系统,与 Make 类似,但是其最为重要的一个优点就是它的灵活性与高效性,能够实现一些必要的功能而不臃肿。

Your compiler (c++) is not compatible with the compiler Pytorch was built with for this platform, which is g++ on linux“Ninja is required to load C++ extensions”解决方案

当安装了ninja库后,会发现又有新的问题出现,具体问题如下: 正如上图所示,服务器默认使用的编译器为c++,而Pytorch使用的是g++编译器,此时无法通过服务器上的c++ compiler去编译Pytorch中的cpp extension,所以会出现warning,并无法进行后续的操作。

解决方法

首先进行问题的分析,发现其实只要让服务器使用g++去进行Pytorch的编译就不会报错了。而要使用g++,首先需要判断服务器中是否安装,故可以使用 whereis 命令去查找,效果如下:

可以发现,服务器中包含g++以及c++,只是默认会使用c++ compiler,所以会和Pytorch的编译工具产生冲突,故目前只需要在当前用户下修改服务器的默认c++编译器,就能解决该问题,具体解决方法如下:可以在bash下输入该指令,这表明当前连接退出后就失效,也可以将其写入.bashrc文件中,这样就能永久生效。

export CXX=g++

该方法是将当前用户环境变量中所有符合CXX(XX表示任意字符)模式的字符替换成g++,所以c++也会被替换成g++,故能有效解决该编译器冲突问题。

PS Linux中export命令详解

export命令的功能为设置或显示环境变量。具体的细节可以参考该博客

参考链接

g++/c++ compiler incompatibility · Issue #974 · NVIDIA/apex (github.com)

如何查看Linux是否安装了gcc和gcc-c++ - 关键步就几步 - 博客园 (cnblogs.com)

使用 Ninja 代替 make - 简书 (jianshu.com)

本文链接地址:https://www.jiuchutong.com/zhishi/293019.html 转载请保留说明!

上一篇:Vue实战【后端返回文件流时,前端如何处理并成功下载流文件】(vue的后端)

下一篇:React18的useEffect会执行两次

  • 认缴制股权转让印花税的计税依据是什么
  • 股东权益是资产吗
  • 金融业产值和金融业增加值有什么不同
  • 商家发票可以随便开金额吗
  • 出口货物索赔如何确认收入
  • 你如何界定成本与费用之间区别?
  • 企业借款不能超过资金多少
  • 小规模季度超过30万是全额纳税吗
  • 核定征收的企业需要做账吗
  • 自产产品用于在建工程按成本价还是销售价
  • 环境资源的含义
  • 税收滞纳金起止时间问题
  • 支票进账对方没钱开户行会打电话叫他存钱吗?
  • 我的初级备考经验--有种力量叫坚持
  • 专利年费应该入哪个科目
  • 个人所得税的征收
  • 仓库存在不足
  • win10指纹传感器在哪里
  • 苹果macmimi
  • 为什么预付账款是流动资产
  • 广告牌费用会计分录
  • wordpress 设置
  • 拍卖费怎么收
  • linux 数据类型
  • 应交增值税的会计科目怎么做
  • 银行收取对公账户服务费有什么用
  • 国地税合并有什么角度写论文
  • thinkphp d
  • 会计政策变更追溯调整为什么不影响所得税
  • 建筑劳务 行业
  • 开发票为什么要对公账户?
  • python中sys模块
  • 小规模纳税人涉税会计分录是哪几个科目
  • 保函被索赔支付什么意思
  • 一般纳税人资格证明在哪里查询
  • 银行汇票用什么会计分录
  • 个人所得税和投保的区别
  • sqlserver 查询语句
  • 待处理财产损益借方增加还是减少
  • 房地产按揭贷款政策
  • 应付职工薪酬的含义
  • 不征税收入与免税收入有哪些
  • 在建工程领用原材料税费怎么处理
  • 客户提现产生的费用计入
  • 税前弥补以前年度亏损
  • 为什么车船税没有发票
  • 处置固定资产取得的净收益属于当期的收入
  • 业务招待费需附上清单
  • 企业房产税优惠政策2023
  • 定期存款怎么做
  • 支付工程款如何入账科目
  • 成本类科目借贷规则
  • 一台OpenSuSE系统的服务器的网络配置
  • ubuntu20 server
  • centos 安装svn
  • elf.exe是什么程序
  • OS X 10.10 Yosemite的新特性与iOS联系更紧密
  • windows使用linux软件
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • win7系统打不开设备与打印机
  • jQuery ajax读取本地json文件的实例
  • 删除滑动解锁图片
  • perl计算时间差
  • eclipse cocos2dx Couldn't load cocos2dcpp from loader
  • Linux中删除文件夹的正确方式
  • margin使用
  • python中2和2.0的区别
  • js注释方法
  • js正则 \w
  • js跨域的几种方法
  • js使用类
  • 税务局冲红发票
  • 税务风险科是干什么的
  • 登录""增值税发票选择确认平台""时提示""打开设备
  • 投诉10080 48小时都没有回复
  • 税务局追缴社保流程及办理期限
  • 季度企业所得税分录
  • 乌市社保缴费一个月多少钱
  • 重庆个人所得税是多少
  • 青岛电子税务局电话人工客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设