Matlab system调用anaconda env python脚本

问题描述

我花了最后24小时在互联网上进行搜索,以尝试找到解决方案,但是似乎没有任何效果。

我正在使用Windows操作系统

我正在使用Matlab 2019a,并且在执行代码期间调用了Python脚本。 Python脚本基本上会创建一个文件,稍后在Matlab执行期间需要使用该文件。在过去的数周/数月中,我一直在Linux操作系统上进行此操作,而没有出现任何问题,因此我知道导致问题的原因不是执行交易的代码或方法。

在Matlab中,我称为system(['python create_file.py ',arg1,' ',arg2]),其中Matlab定义了参数,然后Python创建了一个文件。我尝试了相对路径,绝对路径,无路径等。我一直遇到相同的错误。如我之前所说,它在Linux OS上可以正常工作。但是,在Windows上,出现错误:

Traceback (most recent call last): 
  File "D:\miniconda\envs\work_tools\lib\site-packages\vtkmodules\vtkIOVeraOut.py",line 5,in <module> 
    from .vtkIOVeraOutPython import * 
ImportError: DLL load failed: The specified procedure could not be found. 
 
During handling of the above exception,another exception occurred: 
 
Traceback (most recent call last): 
  File "D:\create_file.py",line 11,in <module> 
    from meshmagick.mesh import Mesh 
  File "D:\miniconda\envs\work_tools\lib\site-packages\meshmagick\mesh.py",line 13,in <module> 
    import vtk 
  File "D:\miniconda\envs\work_tools\lib\site-packages\vtk.py",line 32,in <module> 
    all_spec.loader.exec_module(all_m) 
  File "D:\miniconda\envs\work_tools\lib\site-packages\vtkmodules\all.py",line 88,in <module> 
    from .vtkIOVeraOut import * 
  File "D:\miniconda\envs\work_tools\lib\site-packages\vtkmodules\vtkIOVeraOut.py",line 9,in <module> 
    from vtkIOVeraOutPython import * 
ModuleNotFoundError: No module named 'vtkIOVeraOutPython' 

如果不清楚,我已经使用Miniconda / conda安装了Python解释器,然后创建了一个名为“ work_tools”的环境。安装Miniconda时,他们会询问您是否要“添加到系统PATH”,建议不要这样做。因此我没有。 Miniconda安装了一个“ Anaconda shell”来激活基本环境。然后,我激活“ work_tools”环境并从那里运行Python脚本,没有任何问题。选择“ work_tools”解释器后,我什至能够在VS Code中运行该代码。因此,我有一个很重要的确认,即我到目前为止所做的一切都是可行的。问题是如上所述从Matlab调用Python脚本。

我试图从激活的“ work_tools”环境中启动Matlab,这会加载与启动Matlab时相同的确切路径。我已经通过从命令行以及在Matlab中运行getenv('PATH')来确认了这一点。这会添加人们声称需要的所有库(在我的研究中确定)以及更多

D:\miniconda\envs\work_tools;
D:\miniconda\envs\work_tools\bin;
D:\miniconda\envs\work_tools\Scripts;
D:\miniconda\envs\work_tools\Library;
D:\miniconda\envs\work_tools\Library\bin;
D:\miniconda\envs\work_tools\Library\lib;
D:\miniconda\envs\work_tools\libs;
D:\miniconda\envs\work_tools\lib;
D:\miniconda\envs\work_tools\Library\mingw-w64\bin;
D:\miniconda\envs\work_tools\Library\usr\bin;
D:\miniconda\condabin;

我确信Matlab内部和外部的PATH是相同的。同样,我可以从命令行执行Python脚本,而不会使用system()在Matlab内部执行脚本。我一直在寻找有关模块(VTK),它们确实存在。同样,我已经从命令行和VS Code运行了此程序,没有任何问题。因此,它不可能来自Miniconda,而必须与Matlab的观察方式有关。

我想念什么? Matlab为什么不能将Python代码作为系统命令运行?

这真的使我感到困惑,除了Windows Matlab会话之外,其他任何地方都可以使用。

更新

因此,我测试了另一个Python脚本(一个不调用VTK的脚本),该脚本从相同的Anaconda“ work_tools”环境调用库,并且使用上述方法(在内部使用system()调用)可以正常工作Matlab)。因此,看来Matlab(Windows)不喜欢VTK的构建/编程方式中的特定功能吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...