Ubuntu18.04系统中python3.7安装MultiNEAT库

  • 前言
    • MultiNEAT介绍
    • 安装问题
  • boost安装
  • MultiNEAT安装
  • 安装过程遇到问题及解决方法

前言

MultiNEAT介绍

MultiNEAT支持标准的NEAT算法和两个关键的扩展:HyperNEAT和ES-HyperNEAT。另外,MultiNEAT库提供新奇搜索方法的实现。该库使用C ++编程语言编写,但提供了全面的Python接口。

安装问题

学习新奇搜索等进化神经算法时,需要用到MultiNEAT库,在安装时遇到了如下问题:

  1. 不能使用pip进行安装,在windows中可以利用.whl文件进行安装,而在ubuntu环境中,只能利用源码编译安装。
  2. 在安装MultiNEAT之前,首先需要安装boost,否则会报类似如下错误:
    ...
    ...
    src/PythonBindings.cpp:34:10: fatal error: boost/python.hpp: No such file or directory#include <boost/python.hpp>^~~~~~~~~~~~~~~~~~
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    

boost安装

使用apt命令安装boost库

$ sudo apt-get install libboost-all-dev

MultiNEAT安装

  1. 首先,下载MultiNEAT.
    下载完成后得到peter-ch-MultiNEAT-0dc93aa.tar.gz文件
  2. 然后,安装依赖库.
    由于编译过程中会使用psutil库,因此首先安装psutil库。

    $ pip3 install psutil
    
  3. 解压.
    $ tar -zxvf peter-ch-MultiNEAT-0dc93aa.tar.gz
    
  4. 编译MultiNEAT
    $ cd peter-ch-MultiNEAT-0dc93aa
    # 通过MN_BUILD环境变量来设置所需的系统(boost或cython)。
    $ export MN_BUILD=boost
    # 编译
    $ python3.7 setup.py build_ext
    
  5. 安装
    $ python3.7 setup.py install
    
  6. 测试
    $ python3.7
    Python 3.7.7 (default, Oct  3 2020, 12:01:51)
    [GCC 7.5.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import MultiNEAT
    >>> MultiNEAT.__str__()
    "<module 'MultiNEAT' from '/home/brainiac/Program/python3.7/lib/python3.7/site-packages/multineat-0.5-py3.7-linux-x86_64.egg/MultiNEAT/__init__.py'>"
    

安装过程遇到问题及解决方法

Note 如在编译时遇到如下问题:

$ python3.7 setup.py build_ext
...
...
/usr/bin/ld: cannot find -lboost_python36
/usr/bin/ld: cannot find -lboost_numpy36
collect2: error: ld returned 1 exit status
error: command 'g++' failed with exit status 1

由于已经安装了boost库,通过搜索boost_pythonboost_numpy可以发现,在/usr/lib/x86_64-linux-gnu目录中包含以下文件

...
libboost_numpy3.a
libboost_numpy3-py36.a
libboost_numpy3-py36.so
libboost_numpy3-py36.so.1.65.1
libboost_numpy3.so
libboost_numpy.a
libboost_numpy-py27.a
libboost_numpy-py27.so
libboost_numpy-py27.so.1.65.1
libboost_numpy.so
...
libboost_python3.a
libboost_python3-py36.a
libboost_python3-py36.so
libboost_python3-py36.so.1.65.1
libboost_python3.so
libboost_python.a
libboost_python-py27.a
libboost_python-py27.so
libboost_python-py27.so.1.65.1
libboost_python-py36.a
libboost_python-py36.so
libboost_python.so
...

可以看到虽然不存在libboost_python36.solibboost_numpy36.so,但是存在libboost_python3-py36.solibboost_python3.solibboost_python.solibboost_numpy3-py36.solibboost_numpy-py27.solibboost_numpy.so,因此根据python版本可以选择使用对应的动态链接库,由于以python3.7为例,需要对文件进行修改。
使用以下方法:
在进行编译之前,首先需要修改目录下的以下两个文件.

  • CMakeLists.txt

    $ vim CMakeLists.txt
    

修改line 15 & 16,将python36修改为python37numpy36修改为numpy3737即需要安装MultiNEAT的python版本号,可以根据需要进行修改,修改后如下:

 ......find_package(Boost COMPONENTSdate_timesystemfilesystempython37numpy37serialization)......
  • setup.py

    $ vim setup.py
    

修改line 114,将libs += ['boost_python36', "boost_numpy3"]修改为libs += ['boost_python3', "boost_numpy3"]
修改后,相应部分如下

...libs = ['boost_system', 'boost_serialization']if is_python_2:libs += ['boost_python', "boost_numpy"]else:# with boost 1.67 you need boost_python3x and boost_numpy3x where x is python version 3.x libs += ['boost_python3', "boost_numpy3"]  # in Ubuntu 14 there is only 'boost_python-py34'
...

然后重新编译安装、测试:

$ python3.7 setup.py clean
$ python3.7 setup.py build_ext
$ python3.7 setup.py install
$ python3.7
Python 3.7.7 (default, Oct  3 2020, 12:01:51)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MultiNEAT
>>> MultiNEAT.__str__()
"<module 'MultiNEAT' from '/home/brainiac/Program/python3.7/lib/python3.7/site-packages/multineat-0.5-py3.7-linux-x86_64.egg/MultiNEAT/__init__.py'>"

完成后,进行测试,可以发现已正确安装。

Ubuntu18.04系统中python3.7安装MultiNEAT库相关推荐

  1. 在Ubuntu18.04系统中,安装tldr

    在Ubuntu18.04系统中,tldr的完整安装流程总结: mkdir -p ~/.tldr/tldr sudo git clone https://codechina.csdn.net/mirro ...

  2. ubuntu18.04系统中 matlab2019 和 sougou拼音冲突

    ubuntu18.04 系统中 matlab2019 和 sogou拼音冲突 问题描述 只要是 matlab2019 和 sogou拼音 这俩东西在一起,我的matlab 就出问题,启动起来了之后也是 ...

  3. Linux用命令安装音乐软件,在Ubuntu 18.04系统中使用命令安装Qmmp音乐播放器的方法...

    在Ubuntu 18.04操作系统中安装Qmmp音乐播放器非常简单,只需要两段命令就可以搞定.下面介绍其方法. Qmmp音乐播放器介绍 Qmmp是一款开源基于Qt的多媒体播放器,提供Qt4及Qt5支持 ...

  4. Ubuntu 16.04系统中利用CUDA安装更新NVIDIA显卡驱动程序的方法

    严正声明:本文系作者davidhopper原创,未经许可,不得转载. 在ThinkPad系列笔记本电脑中使用过Ubuntu 16.04系统的同学都知道,NVIDIA显卡驱动程序特别难安装.以我使用的T ...

  5. Linux Ubuntu18.04系统 USB转串口驱动安装,查看串口号

    When you plugin your USB-UART converter, and run "> ls /dev/tty*", if you don't see the ...

  6. Ubuntu18.04 系统下ROS Melodic安装

    ROS官网:有一些在linux下的安装步骤说明 前期准备:更换国内源以及将"软件和更新"下的"可从互联网下载"的四个选项都勾选上. 安装步骤: 一. 添加ROS ...

  7. 虚拟机安装Ubuntu18.04系统

    安装的镜像可在Ubuntu的官方网站进行下载. Ubuntu18.04的具体下载地址如下(iso格式): https://releases.ubuntu.com/18.04.5/ 下面开始进行安装. ...

  8. linux系统下载18.04,在Ubuntu 18.04系统中下载安装Persepolis Download Manager

    本文介绍在Ubuntu 18.04系统中下载和安装Persepolis Download Manager的方法,也适用在Linux Mint版本中,它是一个用Python编写的免费开源下载管理器,支持 ...

  9. 源码编译Ros, Ubuntu18.04系统使用源码编译Ros1,出错集合及其解决办法

    官方的介绍http://wiki.ros.org/kinetic/Installation中提到了,脚本安装的方法it is available for Ubuntu Wily (15.10) and ...

最新文章

  1. KG-知识图谱入门-王昊奋课程详细笔记(附课件、课程链接与详细笔记) 内有资源
  2. Spark在集群中的安装
  3. python爬取考研成绩什么时候出来_用Python爬取了考研吧1000条帖子,原来他们都在讨论这些!...
  4. JavaScript 验证API
  5. (29)VHDL实现时钟分频
  6. Flink watermark
  7. 小米王育军:小爱背后的小米语音技术
  8. ubuntu系统颜色更改
  9. 2014年辛星starphp第一节设置入口文件以及App类
  10. AWS成本估算的相关小工具
  11. Windows Server2003搭建ssl通信
  12. 增强光学系统设计 | Zemax 全新 22.2 版本产品现已发布!
  13. vue鼠标划过移入移出触发方法
  14. 前端-JS基础之各类型常用api
  15. 华为+android+root权限获取root,如何获得华为手机的root权限?华为root权限获取教程...
  16. 分布式轻量级任务调度框架-XXL-JOB(最全面,附带本人实战)
  17. sd和sem啥区别_生物统计学-标准差(SD)和标准误(SEM)有何区别.pdf
  18. javascript 简繁转换
  19. 仿微信悬浮通知栏/横幅通知
  20. 学生成绩表c语言,学生成绩信息表(c语言程序)

热门文章

  1. MVC 使用 Webuploader 插件 传递额外参数 备忘笔记
  2. [导入]CommunityServer 1.1 源码及汉化文件
  3. Javascript访问Cookie的四个常用方法
  4. Visual Studio 2010 中编写C代码的一些常见问题
  5. [转载] java向匿名内部类传递参数
  6. python里我最容易搞不清楚问题之一的encode和decode
  7. 孙子兵法吃鸡之地形篇
  8. win10 64位 安装TensorFlow
  9. java BitSet2
  10. C语言八进制和十六进制数