【问题标题】:Problems installing "MATLAB Engine for Python" with Anaconda使用 Anaconda 安装“MATLAB Engine for Python”时出现问题
【发布时间】:2015-10-27 00:02:43
【问题描述】:

我正在使用 Python 3.4.3 | Anaconda 2.3.0 (x86_64) 在 OS X 10.10.5 和 these instructions to install MATLAB Engine for Python 之后。安装似乎成功,但在启动 python 并尝试导入时,我看到以下内容:

Python 3.4.3 |Anaconda 2.3.0 (x86_64)| (default, Oct 20 2015, 14:27:51) 
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import matlab.engine
Traceback (most recent call last):
  File "/Users/tyler/.local/lib/python3.4/site-packages/matlab/engine/__init__.py", line 42, in <module>
    pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSION)
  File "/Users/tyler/anaconda/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2224, in _find_and_load_unlocked
ImportError: No module named 'matlabengineforpython3_4'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/tyler/.local/lib/python3.4/site-packages/matlab/engine/__init__.py", line 58, in <module>
    pythonengine = importlib.import_module("matlabengineforpython"+_PYTHONVERSION)
  File "/Users/tyler/anaconda/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 2254, in _gcd_import
  File "<frozen importlib._bootstrap>", line 2237, in _find_and_load
  File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1191, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1161, in _load_backward_compatible
  File "<frozen importlib._bootstrap>", line 539, in _check_name_wrapper
  File "<frozen importlib._bootstrap>", line 1715, in load_module
  File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed
ImportError: dlopen(/Applications/MATLAB_R2015b.app/extern/engines/python/dist/matlab/engine/maci64/matlabengineforpython3_4.so, 2):     Library not loaded: @rpath/libpython3.4m.dylib    
  Referenced from: /Applications/MATLAB_R2015b    .app/extern/engines/python/dist/matlab/engine/maci64/matlabengineforpython3_4.so    
  Reason: image not found    

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/tyler/.local/lib/python3.4/site-packages/matlab/engine/__init__.py", line 60, in <module>
    raise EnvironmentError('The installation of MATLAB Engine for Python is '
OSError: The installation of MATLAB Engine for Python is corrupted.  Please reinstall it or contact MathWorks Technical Support for assistance.

在研究这个问题时,我在 MathWorks 的网站上找到了 several other references 来解决这个确切的问题,但都没有解决方案。最后的链接表明问题可能出在dynamic linking。

鉴于有多少科学工具箱仅在 MATLAB 中可用,能够使用 Anaconda 调用此引擎将非常有用。虽然有其他可用的软件包支持此功能,但它们总是有限制或其他复杂性,例如客户端-服务器架构。

欢迎提出任何建议。

【问题讨论】:

    标签: python macos matlab anaconda


    【解决方案1】:

    根据我与 MathWorks 支持人员的沟通,MATLAB Engine for Python 与 Anaconda 不兼容。幸运的是,这是不正确的。

    感谢 Anaconda 邮件列表的一些指导,我找到了一个简单的解决方案:

    sudo ln -s ~/anaconda/lib/libpython3.4m.dylib /usr/lib
    

    此后,matlab.engine 导入成功。希望这对某人有帮助!

    编辑:从 OS X 10.11 El Capitan 开始,由于 Rootless 功能需要调整解决方法,因为 root 不再有权修改 /usr/lib

    sudo ln -s ~/anaconda/lib/libpython3.4m.dylib /usr/local/lib
    

    【讨论】:

    • 要是我一周前找到这个答案就好了! :-) 除了添加这个非常重要的链接之外,重要的是 LD_LIBRARY_PATH 不包含 anaconda 的路径。对于 OS X 用户的 DYLD_LIBRARY_PATH 而言,这可能同样适用……请参阅此处对我有用的完整 Anaconda/MATLAB 说明:stackoverflow.com/a/45161288/2524427
    • 对于那些在 macOS 上使用 pyenv 的用户:sudo ln -s $HOME/.pyenv/versions/3.4.7/Python.framework/Versions/3.4/lib/libpython3.4m.dylib /usr/local/lib
    【解决方案2】:

    如果您尝试在 conda 环境中安装 matlab 引擎,请按照以下步骤操作:

    cd "matlabroot\extern\engines\python"
    python setup.py install --prefix="installdir"
    

    例如

    cd /opt/MATLAB/R2019a/extern/engines/python
    python setup.py install --prefix="/home/nagabhushan/anaconda3/"
    

    现在,matlab引擎包实际上是安装在单独的 anaconda3/lib/python3.6/site-package/matlab
    因此,您需要手动将该 matlab 文件夹移动到您的 python 正在使用的站点包文件夹中。如果您有多个虚拟环境,请将其移动到您将运行程序的虚拟环境的相应站点包文件夹中。 例如 anaconda3/envs/my_env/lob/python3.6/site-packages/matlab

    参考资料:
    https://stackoverflow.com/a/41800724/3337089
    https://stackoverflow.com/a/56553740/3337089

    编辑 1(2020 年 3 月 3 日):
    我尝试激活我的环境,然后简单地安装 matlab 引擎,它就成功了!我正在使用Python 3.7

    python setup.py install
    

    请注意,这最初给出了 error: You do not have write permission in build/lib/matlab/engine/ 的错误,但递归地更改构建目录的权限:sudo chmod -R 777 build/

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多