在matlab引擎中运行start_matlab时出现分段错误

问题描述 投票:1回答:1

我正在使用

  • Mac OSX High Sierra
  • anaconda3 python(python = 3.6的虚拟环境)
  • Matlab R2018a。

重现步骤:

  1. 创建一个新的python 3.6环境。激活环境
  2. 转到Matlab / extern / engines / python并运行python setup.py install
  3. 运行以下脚本。
import matlab.engine
matlab.engine.start_matlab()

分段错误发生在start_matlab()行(不是导入行)。在使用matlab引擎之前我没有遇到任何麻烦。我怎么调试这个? (主要是链接问题)。

======================

我卸载了Anaconda3,并使用了Python 2.7系统。我遇到了同样的问题,问题在于Matlab的libwmvm.dylib。

    Process:               Python [5124]
Path:                  /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               2.7.10 (2.7.10)
Code Type:             X86-64 (Native)
Parent Process:        bash [2183]
Responsible:           Python [5124]
User ID:               501

PlugIn Path:             /Applications/MATLAB_R2018a.app/bin/maci64/libmwmvm.dylib
PlugIn Identifier:       libmwmvm.dylib
PlugIn Version:          ??? (0)

Date/Time:             2018-04-27 23:27:03.250 +0700
OS Version:            Mac OS X 10.13.4 (17E199)
Report Version:        12
Anonymous UUID:        885790DC-B32C-0363-903C-837A7C285AF3

Sleep/Wake UUID:       14FBD560-D2B9-4A59-89F1-DABA878FCA70

Time Awake Since Boot: 10000 seconds
Time Since Wake:       3700 seconds

System Integrity Protection: enabled

Crashed Thread:        3

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000090
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [0]

VM Regions Near 0x90:
--> 
    __TEXT                 000000010e1c6000-000000010e1c8000 [    8K] r-x/rwx SM=COW  p [/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python]

Thread 0:: Dispatch queue: com.apple.main-thread
python anaconda matlab-engine
1个回答
1
投票

python 3.6不支持matlab引擎,你可以使用python 3.5.

我有anaconda,python 2.7,3.5和3.6。例如,您可以通过将python.exe重命名为python35.exe来轻松区分它们。你可以这样叫你py srcipt:

python35 example.py

它将用python35调用它。

提示:pip install和conda install在重命名后不起作用,因为它正在搜索python.exe,所以你不必在大多数情况下重命名anaconda和python版本。

© www.soinside.com 2019 - 2024. All rights reserved.