关于Conda中Rdkit报错ImportError:无libboost_python动态库问题解决方法--安装至指定目录

本文主要是介绍关于Conda中Rdkit报错ImportError:无libboost_python动态库问题解决方法--安装至指定目录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于Conda中Rdkit报错ImportError:无libboost_python动态库问题解决方法--安装至指定目录

    • 问题解析
    • 解决方法
      • 1. boost包下载
      • 2. boost包编译安装
    • 参考博客

问题解析

在这里插入图片描述libboost_python36.so.1.73.0报错信息解析:

  1. 缺少的包名为boost
  2. 该库支持语言为python3.6
  3. boost包版本为1.73.0

报错原因有两点:

  1. boost包未安装
  2. 编译时使用了python2,未指定python3.6

解决方法

1. boost包下载

下载地址:boost_1_73_0.tar.gz

2. boost包编译安装

a) 依赖库检查与更新(需要联网,可跳过)

$ sudo apt-get update  
// 搜到所有的boost库
$ sudo apt-cache search boost
// 安装相应缺少的库 
$ sudo apt-get install libboost-all-dev

b) 解压boost包

// 搜到所有的boost库
$ tar -xzvf [你的下载boost包路径]/boost_1_73_0.tar.gz 

解压后会得到boost_1_73_0文件夹,如下图所示
图1 boost解压c) 编译boost 1.73.0
此过程在自定义Conda环境中完成,若在base环境,则需要将envs/[创建的conda环境名]部分删掉,具体查看对应路径后即可明白。

// 进入boost_1_73_0目录
$ cd boost_1_73_0
//设置并运行sh文件,运行完如图2所示
//设置anaconda的python路径, 此处为自定义环境中的python3.6.5(查看python版本命令 python -V)
$  ./bootstrap.sh --with-libraries=python --with-toolset=gcc --with-python="/home/[用户名]/anaconda3/envs/[创建的conda环境名]/bin/python3.6m"  --with-python-version=3.6 --with-python-root="/home/[用户名]/anaconda3/envs/[创建的conda环境名]" --prefix="/home/[用户名]/anaconda3/envs/[创建的conda环境名]" --exec-prefix="/home/[用户名]/anaconda3/envs/[创建的conda环境名]"
//运行完成如图3所示
$ ./b2 --with-python include="/home/[用户名]/anaconda3/envs/[创建的conda环境名]/include/python3.6m" --prefix="/home/[用户名]/anaconda3/envs/[创建的conda环境名]" --exec-prefix="/home/[用户名]/anaconda3/envs/[创建的conda环境名]"
//安装,运行完成如图4所示
$ ./b2 install

d)编译过程图
i. 运行bootstrap.sh过程
图2ii. 运行b2文件过程
图3iii. 安装过程
图4

iv. 检验是否编译成功:
查看制定安装路径下(–prefix后的参数值),是否有libboost_python36相关文件,如图5所示
图5

e)建立软连接

$ ln -s libboost_python-py36.so /home/[用户名]/anaconda3/envs/[创建的conda环境名]/lib/libboost_python3.so
$ ln -s libboost_python-numpy36.so /home/[用户名]/anaconda3/envs/[创建的conda环境名]/lib/libboost__python-numpy3.so

参考博客

[1] libboost_python3.6编译过程记录
[2] 基于python3.6的libboost库安装(用于anaconda3安装caffe)
[3] caffe安装–安装libboost(基于python3.6)的库部分

这篇关于关于Conda中Rdkit报错ImportError:无libboost_python动态库问题解决方法--安装至指定目录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/307991

相关文章

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的