zoukankan      html  css  js  c++  java
  • [python][matlab]在python36上安装matlab2015b引擎

    问题来源

    笔者曾经在python34上安装matlab接口,当时使用的版本为matlab 2015b,众所周知,2015年还没发行py36,所以只能支持到py34。这种不兼容有两种解决办法,你可以通过查看本地的matlab文档进而知道支持的py版本,升级到高版本的matlab可以支持更高版本的py。当然也可以新建旧版本的py,比如笔者就是使用anaconda建立了一个py34的库,相比于升级matlab,降级py是更简单的做法。
    相对应的做法可以参考我上一篇博文的做法:
    https://www.cnblogs.com/wildkid1024/p/10417183.html

    新的问题

    但是不是新建库就解决问题了呢,随之而来的新问题是,假如我们其他编程库依赖于更新版本的py版本,那么我们不得不忙于不停地版本切换。最佳的解决方案,是py36兼容matlab 2015b,甚至是其他版本。但是如果切换到python36再运行上述的安装方案时,便会出现错误:

    Python 3.6 is not supported.
    

    原来是官方的setup文件里不支持py3.6,那么怎么办呢?

    解决方案

    通过阅读engine源码文件,我们可以得知,原来受支持的版本在一个列表中,于是,我们需要找到以下文件engines/python/build/lib/matlab/engine/__init__.py,然后修改对应的受支持列表为:

    _supported_versions = ['2_7', '3_3', '3_4', '3_6']
    

    同样,通过不断地追踪错误,我们很容易找到另外两个版本支持列表的文件:
    engines/python/dist/matlab/engine/__init__.pyengines/python/setup.py,依次进行同样的修改即可。

    当再次运行python setup.py install时,仍然会报错:

    ModuleNotFoundError: No module named 'matlabengineforpython3_6'
    

    matlabengineforpython3_6是一个编译好的py二进制库,当然没办法再编译,当然一个解决方法就是修改py34的二进制库即可。需要复制/engines/python/dist/matlab/engine/win64/matlabengineforpython3_4.pyd复制到同文件夹下,然后改为matlabengineforpython3_6.pyd即可。剩下的工作还需要一个二进制代码编辑器,然后将其中的所有3_4修改为3_6即可。在win下,可能还需要一些修改,将python34.dll修改为python36.dll

    当再次运行python setup.py install时,经过一番安装之后,就可以使用以下的程序来验证是否安装成功:

    import sys
    print(sys.version)
    
    import matlab.engine
    eng = matlab.engine.start_matlab()
    print(eng.sqrt(4.))
    

    小插曲

    当使用linux操作系统的时候,很可能遇到文件读写权限问题,相关的操作可以按照官方给出的文档进行操作:参见[2].

    引用

    [1]. https://gist.github.com/dangom/303879ca649f7a3fe113912d7ffa62d4

    [2]. https://ww2.mathworks.cn/help/matlab/matlab_external/install-matlab-engine-api-for-python-in-nondefault-locations.html

    [3]. https://www.cnblogs.com/wildkid1024/p/10417183.html

  • 相关阅读:
    深入浅出 JVM ClassLoader
    JVM 线上故障排查基本操作
    深入浅出 JVM GC(3)
    MyBatis 源码分析系列文章合集
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析
    MyBatis 源码分析系列文章导读
  • 原文地址:https://www.cnblogs.com/wildkid1024/p/11099718.html
Copyright © 2011-2022 走看看