It seems that scikit-learn has not been built correctly_Michael-洋的博客-程序员宝宝

技术标签: 环境配置  linux  

1、问题背景

1)环境:服务器(非root)

2)需求:安装开源深度学习代码,本机cuda以及pytorch版本太低

3)操作:可能起源于删除环境变量引起的(unset)

        a)查看环境变量env、printenv,查看单个变量printenv PATH或者echo $PATH

        b)重置环境变量unset PATH(貌似不能删除单个路径),这个慎用!!!

        c)添加环境变量export,例如export PATH=/usr/local/cuda-10.2/bin或者export                       PATH=/usr/local/cuda-10.2/bin:$PATH;另外,永久性添加在.bashrc文件中,并在命令行               source .bashrc临时添加直接在命令行执行即可。

             区别:加:$PATH的表示这个路径放在最开头,那么系统检索的时候会优先选择该路径,              不加:$PATH就默认将路径放到该环境变量最后,如果前面有其他可调用的路径就不会调                 用该路径。所以最好不要使用unset,而是使用export PATH= to/your/path:$PATH。

2、遇到的问题

1)安装mmcv时候,ERROR: Failed building wheel for opencv-python

        可能的解决方案:运行 pip install -vv,查看哪些依赖库未安装或者未升级。

2)ModuleNotFoundError: No module named ‘skbuild’

        pip install scikit-build,如果还有依赖继续pip install下去

        如果有cmake相关的,参考:

ModuleNotFoundError: No module named ‘skbuild‘解决办法_月夜竹清的博客-程序员宝宝_python skbuild

3)It seems that scikit-learn has not been built correctly或者dlopen: cannot load any more object with static TLS

        把scikit-learn版本降下来

4) Python error: Aborted 或者double free or corruption

遇到第4种问题是最坑的,需要定位问题出错的位置。
a)在python程序中添加如下代码,来追溯问题出现位置。

import faulthandler
faulthandler.enable()

b)GDB大法

1、在执行程序的最开头加入如下代码

import sys
def trace(frame, event, arg):
    print("%s, %s:%d" % (event, frame.f_code.co_filename, frame.f_lineno))
    return trace
sys.settrace(trace)
# 下面是原来的代码
import codecs  #
...

2、在命令行执行如下代码

gdb python

 然后在弹出的窗口中执行run /path/to/script.py

(gdb) run /path/to/script.py
## wait for segfault ##

一次调试段错误(segmentation fault)的经验 - 知乎

What causes a Python segmentation fault? - Stack Overflow

然后定位到详细问题如下5):

5)ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.

 然后采用unset更新环境变量后还是报错,怀疑是直接用了已经下载的安装包安装的,这些安装包是错误的版本。所有采用conda清除无用安装包,参考如下:

conda clean -p      //删除缓存
conda clean -y --all //删除pkgs目录下所有的无用安装包及cache

conda清除无用安装包_万无引力-的博客-程序员宝宝_conda清理安装包

Python-Opencv [ERROR: recursion is detected during loading of "cv2"_凌空的桨的博客-程序员宝宝

ImportError: ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation. - emanlee - 博客园

3、删除代码及虚拟环境重来 解决问题!!!

一路跟着install.readme安装下去,总共报两个错误:

1)ModuleNotFoundError: No module named ‘skbuild’

        a. 这个首先注意pip版本是不是过低,有提示就先更新pip。可能错误直接就解决了。

        b. 不行的话再根据2中的pip install -vv,看少什么依赖库。

        c. 根据2中 2)转载的博客来解决。

2)It seems that scikit-learn has not been built correctly或者dlopen: cannot load any more object with static TLS

        把scikit-learn版本降下来0.20.3,Downgrading to scikit-learn 0.20.3 makes the problem go away.

        https://github.com/scikit-learn/scikit-learn/issues/14485

问题解决!!适当时候删除代码和虚拟环境重来最好,Over!!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/x550262257/article/details/124470919

智能推荐

STM32HAL库使用详解_limint86的博客-程序员宝宝_stm32hal库函数中文手册

1. 文档和库规范本用户手册和固态函数库按照以下章节所描述的规范编写。1.1缩写Table1 本文档所有缩写定义缩写外设/单元ADC模数转换器BKP备份寄存器CAN控制器局域网模块DMA直接内存存取控制器EXTI外部中断事件控制器FLASH闪存存储器GPIO通用输入输出I2C内部集成电路IWDG独立看门狗NVIC嵌套中断向量列表控制器PWR电源/功耗控制RCC复位与时钟控制器RTC实

callback(回调函数)_webelieveyou的博客-程序员宝宝_callback()

先讲点题外话。编程分为两类:系统编程(system programming)和应用编程(application programming)。所谓系统编程,简单来说,就是编写库;而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用。系统程序员会给自己写的库留下一些接口,即API(application programming interface,应用编程接口),以供应用程序员使用。所以...

1. win7下安装Fedora双系统最新教程_裂缝中的阳光JDG的博客-程序员宝宝_fedora27 双系统

win7下安装Fedora双系统最新教程Jiangdg_VIPhttp://blog.csdn.net/u012637501    由于最近项目需要在linux环境下编译调试,以前用虚拟机问题多多但又不想放弃win7系统,所以前思后想还是稍微动动手搞个双系统吧。对于在win7基础上安装linux双系统,之前也看过其他人写的方法,感觉写得有点杂并且问题多多。经过博主多次的

python笔记-8(logging模块、re模块、栈与队列)_詹小布的博客-程序员宝宝

一、Logging模块日志1、logging导入 Import logging2、知道5个日志级别的等级关系Debug->info->warning->error->critical3、输出5种日志的基本方式logging.debug ('xxxx')logging.info('xxx')logging.waring('xx...

随便推点

Android 自定义控件----( 原生控件修改 onDraw )_babyyang1213的博客-程序员宝宝_安卓根据数据库修改原有的控件

Android 的控件自定义有N多的方法简单点来总结至少包括:        1. 组合控件。(将现有控件组合在你的新控件里,例如一个 ImageView 和 一个 Button 控件)之后总结这种自定义方式的具体使用。      2. 纯手工全新打造,继承自 View  自己重新写  onMeasure  以及 onDraw 函数 ... (好吧,这个家当比较专业,当然是否使用看你自

uboot之u盘启动kernel_mirkerson的博客-程序员宝宝_uboot u盘启动

分类: U-BOOT usb2011-01-04 22:41 1574人阅读 评论(15) 收藏 举报AT91SAM9260U-BOOTOHCI 对于 U 盘启动 kernel, 先通过了解整个框架,在细说 USB 枚举(包括 HUB ) ,OHCI 等内容 一.            总体流程在 U-BOOT 中, USB HOST 是可以不支持的,如果需要

Datawhale组队学习周报(第033周)_青少年编程备考的博客-程序员宝宝

文章目录希望开设的开源内容[01 吃瓜教程——西瓜书+南瓜书](https://mp.weixin.qq.com/s/_BRI9OUPQG46uhJ5Gukd0A)[02 李宏毅机器学习(含深度学习)](https://mp.weixin.qq.com/s/PLKLvlKYq8QMgSBKXFiO2w)[03 动手学数据分析](https://mp.weixin.qq.com/s/CC_NnCcVjVTRQ92FT3EbKw)[04 编程实践(数据可视化)](https://mp.weixin.qq.com

vue一个页面发出多个异步请求_浅谈vue异步数据影响页面渲染_sxtagz的博客-程序员宝宝

浅谈vue异步数据影响页面渲染今天遇到一个问题,要保证页面渲染前请求的数据已经得到了由于user是在异步请求之后保存在session中,而在页面渲染时session中还没有user,页面直接报错。因此我希望能在所有请求都得到后再去做页面的渲染。1.先把id为app的div用v-if="appShow",定义appShow为false进行隐藏,避免渲染2.写计数器,每1ms进行一次查询,如果sess...

Linux C_弗里曼的小伙伴的博客-程序员宝宝_istream返回文件描述符

Linux C 2014年3月10日1  编译和链接1.1 流程源程序-》预编译-》编译-》链接-》完成1)       源程序:书写源程序代码2)       预编译:宏指令处理,生成编译源程序(-E)3)       编译:将源程序汇编(-S),然后编译生成目标程序(二进制)(-c)4)       链接:将目标程序中的库函数链接实体,生成二进制。如果使用的是静

搭建spark中一般能遇到的错_qq_34523222的博客-程序员宝宝

一.经验1.Spark Streaming包含三种计算模式:nonstate .stateful .window2.kafka可通过配置文件使用自带的zookeeper集群3.Spark一切操作归根结底是对RDD的操作4.部署Spark任务,不用拷贝整个架包,只需拷贝被修改的文件,然后在目标服务器上编译打包。5.kafka的log.dirs不要设置成/tmp下的目录,貌似tmp目录有文件数和磁...

推荐文章

热门文章

相关标签