python安装matlab库_[python][matlab]在python36上安装matlab2015b引擎
問題來源
筆者曾經在python34上安裝matlab接口,當時使用的版本為matlab 2015b,眾所周知,2015年還沒發(fā)行py36,所以只能支持到py34。這種不兼容有兩種解決辦法,你可以通過查看本地的matlab文檔進而知道支持的py版本,升級到高版本的matlab可以支持更高版本的py。當然也可以新建舊版本的py,比如筆者就是使用anaconda建立了一個py34的庫,相比于升級matlab,降級py是更簡單的做法。 相對應的做法可以參考我上一篇博文的做法: https://www.cnblogs.com/wildkid1024/p/10417183.html
新的問題
但是不是新建庫就解決問題了呢,隨之而來的新問題是,假如我們其他編程庫依賴于更新版本的py版本,那么我們不得不忙于不停地版本切換。最佳的解決方案,是py36兼容matlab 2015b,甚至是其他版本。但是如果切換到python36再運行上述的安裝方案時,便會出現(xiàn)錯誤:
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__.py和 engines/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操作系統(tǒng)的時候,很可能遇到文件讀寫權限問題,相關的操作可以按照官方給出的文檔進行操作:參見[2].
引用
總結
以上是生活随笔為你收集整理的python安装matlab库_[python][matlab]在python36上安装matlab2015b引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 省选+NOI
- 下一篇: P5703 【深基2.例5】苹果采购(s