当前位置: 首页 > 面试题库 >

在Anaconda虚拟环境中启动Matlab引擎会返回“分段错误(核心已转储)”

袁英豪
2023-03-14
问题内容

我已经按照从Anaconda在Linux上将Matlab
Engine安装
到运行Python3.5的Anaconda虚拟环境的答案中的说明安装了官方的MATLAB Engine
。我现在可以导入matlab并且matlab.engine不会收到错误。但是,当我尝试:时
matlab.engine.start_matlab(),出现“分段错误(核心已转储)”

我尝试从conda环境中设置LD_LIBRARY_PATH(以防万一,即使相关):,export LD_LIBRARY_PATH=/System/Library/Frameworks/Python.framework/Versions/Current/lib:$LD_LIBRARY_PATH但无济于事。据我所知,该路径也不存在,所以我也尝试过
export DYLD_LIBRARY_PATH=path_to_anaconda3/envs/myEnv/lib:$LD_LIBRARY_PATH

那么,如何在Anaconda虚拟环境中从Python启动matlab引擎/调用Matlab脚本?

顺便说一下,我在Ubuntu上


问题答案:

简短的答案:有两个问题需要解决

  1. $LD_LIBRARY_PATH应该 包含对Anaconda安装的路径。根据conda文档:https ://conda.io/docs/building/shared-libraries.html,建议不要添加这样的路径,但是某些软件包仍然可能这样做,从而导致分段错误。
  2. 需要从正确版本的libpythonXXX.dylib文件到/ usr / lib /的符号链接,以便MATLAB可以找到正确的Python

长答案:将MATLAB Engine与Anaconda结合使用的完整安装说明

  • 安装支持您要使用的Python的MATLAB版本。确保已激活此特定的MATLABhtml" target="_blank">安装
  • 打开终端并转到包含MATLAB安装的Python引擎的文件夹: cd "/usr/local/MATLAB/R2017a/extern/engines/python"
  • 使用要使用的Python版本运行setup.py,并在Anaconda环境位置添加前缀:sudo python3.5 setup.py install --prefix="/your_path_to_anaconda3/envs/your_env"。此时,你应该能够import matlabmatlab.engine您的蟒蛇环境的Python内,但是,在我的情况下,启动发动机给了分割错误。
  • 查找正确版本的libpython文件。您的Anaconda环境应包含以下内容:find /your_path_to_anaconda3/envs/your_env/ -name libpython*。就我而言,这返回了:
    • /…/lib/libpython3.so
    • /…/lib/python3.5/config-3.5m/libpython3.5m.a
    • /…/lib/libpython3.5m.so.1.0
    • /…/lib/libpython3.5m.so
  • 当我想在python 3.5中使用它时,我使用了libpython3.5m(我不知道为什么存在’m’)。从该文件的.dylib版本到/ usr / lib:建立符号链接sudo ln -s /your_path_to_anaconda3/envs/your_env/lib/libpython3.5m.dylib /usr/lib。请注意,/ usr / lib中只能有一个名为libpython3.5m.dylib的链接。因此,如果您有多个使用相同版本的Python的Anaconda环境,则只需将此链接设置一次即可。但是请记住不要删除此环境,因为那样会断开所有其他依赖它的环境的链接。
  • 启动一个新终端(!)并激活您的Anaconda环境:source activate your_env。在Anaconda环境中检查LD_LIBRARY_PATH是否包含对Anaconda环境的任何引用echo $LD_LIBRARY_PATH。如果是这样,请确保它不再做:export LD_LIBRARY_PATH=only_paths_you_do_want_to_keep_separated_by_a_colon。每当您激活Anaconda环境时,都需要重复执行此导出操作,因此您可能希望研究更永久的设置方法。但是,在我的情况下(除了我自己添加它以希望可以改善的事实),该路径实际上是由pygpu添加的,所以我最终从我的python脚本中重置了LD_LIBRARY_PATH(到目前为止,没有注意到不良影响) 。


 类似资料:
  • 问题内容: 我是python的新手,正在遇到一个奇怪的错误: 当我执行以下代码时: 这部分代码是从程序的stdout中读取的。当我在线程外执行 时,它将起作用!但是当我在fais线程中执行它时…有什么建议吗? 问题答案: 是当程序退出并带有信号并且启用了核心创建时Linux打印的字符串。这意味着 某些 程序已崩溃。 如果您实际上是通过运行Python遇到此错误,则意味着Python解释器已崩溃。发

  • 问题内容: 我目前在我的机器上已经安装了Enthought Python发行版 ,并且不想破坏它,但是我想从Continuum迁移到Anaconda。 我可以轻松地将Anaconda安装到我创建的virtualenv目录中,但是我不确定如何告诉virtualenv使用Python的anaconda版本。如果我告诉整个系统使用它,我可以用类似的方式进行改动。有没有办法在virtualenv中做到这一

  • 问题内容: 我是Anaconda Python的新手,正在Sublime Text3中建立一个项目。我已经安装Anaconda并使用以下方法创建了虚拟环境: 我在为SublimeText 3设置Virtualenvs插件时遇到问题。 当我尝试时,它会问我要提供的virtualenvs路径: 然后它要求我假设是python发行版的路径,因为它列出了python系统版本的文件路径-但没有anacond

  • 本文向大家介绍Python使用Anaconda制作虚拟环境,包括了Python使用Anaconda制作虚拟环境的使用技巧和注意事项,需要的朋友参考一下 示例 virtualenvAnaconda的强大替代品-跨平台的pip类软件包管理器,捆绑了可快速创建和删除虚拟环境的功能。安装Anaconda之后,以下是一些入门指南: 创建环境 在<envname>您的虚拟环境中使用任意名称,并且<versio

  • 还有人看到这个吗?使用Python2.7。13在窗户上。我是SSL截获的幕后黑手,通过安装Certfi并将我们自己的证书添加到cacert,我花了很长时间才克服python和pip上的SSL错误。佩姆。 但这在virtualenv中不起作用,无论我尝试了什么(相同的步骤),我仍然会得到错误- " 想知道是否有人看到了这一点,并得到它的工作-谢谢!

  • 问题内容: 从代码移动到新机器(可能运行不同的OS)相对简单并且给出相同结果的意义上来说,主要的工作之一就是确保代码的可移植性。 来自Python背景,我习惯了虚拟环境的概念。与所需软件包的简单列表一起使用时,这可以确保安装的软件包和库在任何计算机上都可用,而不会引起太多麻烦。当然,这不能保证- 不同的操作系统都有自己的缺点和特点-但这可以为您提供95%的解决方案。 R中是否存在这样的东西?即使它