matlab调用python报错问题

标签: matlab
9人阅读 评论(0) 收藏 举报
分类:
matlab调用python函数报错如下:
错误使用 mlabwrap>_flush_write_stdout (line 195)
Python 错误 AttributeError: MexPrinter instance has no attribute 'flush'

出错 mlabwrap>_do (line 546)
            handle_out(mlabraw.eval(self._session, '[%s]=%s;' % (", ".join(resSL), cmd)))

出错 mlabwrap>__getattr__ (line 627)
            nout = self._do("nargout('%s')" % name)

通过查看@alby3z在gitHub上的回答找到解决方案,原网址:

https://github.com/SteveDoyle2/pyNastran/issues/351 

解决办法:将下面代码覆盖redirectstdout.m文件即可,这个文件是大神所修改,本人只是搬运

文件位置:

C:\Program Files\MATLAB\R2016a\toolbox\matlab\external\interfaces\python\+python\+internal\redirectstdout.m

文件内容:

function redirectstdout
%   FOR INTERNAL USE ONLY -- This function is intentionally undocumented
%   and is intended for use only within the scope of functions and classes
%   in the MATLAB external interface to Python. Its behavior may change, 
%   or the function itself may be removed in a future release.


% Copyright 2014 The MathWorks, Inc.


% REDIRECTSTDOUT redirects Python standard out to the MATLAB command window.
if ispc
    libname = 'pycli.dll';
elseif ismac
    libname = 'libmwpycli.dylib';
else
    libname = 'libmwpycli.so';
end
script = sprintf([...
'import sys\n',...
'import ctypes\n',...
'import codecs\n',...
'class MexPrinter:\n',...
'   def __init__(self):\n',...
'      self.library = ctypes.cdll.LoadLibrary(''%s'')\n',...
'      self.library.cPrintf.argtypes = (ctypes.c_long, ctypes.c_char_p)\n',...
'      self.library.uPrintf.argtypes = (ctypes.c_long, ctypes.c_char_p)\n',...
'      self.preferredencoding = ''utf16''\n',...
'   def write(self,buff):\n',...
'      if isinstance(buff, bytes):\n',...
'         self.library.cPrintf(len(buff), buff)\n',...
'      else:\n',...
'         data = codecs.encode(buff, self.preferredencoding, ''replace'')\n',...
'         self.library.uPrintf(len(data), data)\n',...
'   def flush(self):\n',...
'      pass\n',...
'   def isatty(self):\n',...
'      pass\n',...
'sys.stdout = MexPrinter()\n'], libname);
py.eval(py.compile(script, 'stdout', 'exec'), py.dict);
end

查看评论

python调用matlab,并解决安装pywin32报错原因

python调用matlab,并解决安装pywin32报错原因
  • mr_muli
  • mr_muli
  • 2017-12-16 17:25:58
  • 79

windows下python调用matlab

前言:很无奈,有些功能自己无法实现,只能调用别人的工具,才有此一举。配置过程中出现一些问题,试了很多次,下面哪些过程是必要不是很清楚了。 如果在linux系统下面就操作就更简单些,需要的可以上网查查...
  • linzhineng44
  • linzhineng44
  • 2016-06-05 22:08:44
  • 3498

Matlab 调用更新的python模块无效的问题

写好python文件后,matlab第一次进行调用成功,将会产生一个缓存库,更新python文件的内容后,第二次调用没有调用更新的文件,而是直接在缓存库中去取,针对这种情况,可以靠以下两种方案来更新调...
  • Study_lizi
  • Study_lizi
  • 2018-01-12 19:24:41
  • 50

python调用matlab的m自定义函数

项目信号处理和提取部分用到了matlab,需要应用到工程中方便研究。用具有万能粘合剂之称的“python”。具体方法如下: 1.python中安装mlab 下载https://pypi.p...
  • pinellina
  • pinellina
  • 2016-03-03 16:11:10
  • 9311

Python 调用Matlab的函数或者调用M文件方法

忽然感觉用python的频率越来越大了,是因为python高层次抽象太方便了,在运行fast RCNN的时候OP算法选的是Edge_Boxes 是matlab的 所以就涉及到了python调用Matl...
  • yueqiang525
  • yueqiang525
  • 2016-03-17 20:43:28
  • 22330

关于JAVA调用Matlab遇到的问题+JDK重装后原有项目报错的解决办法

为了减少开发的工作量,所以就想到通过调用Matlab现成的函数来实现任务。matlab后来的版本确实支持这个功能,本人本来装的R2013B,JDK8,但是一开始按照这篇文章(http://blog.s...
  • manfangweiwei
  • manfangweiwei
  • 2015-12-09 21:01:01
  • 922

Java中调用matlab遇到的问题总结

问题一: windows下: 找不到mclmcrrt***.dll文件 可由两种方案解决:一、在网上将该文件下载,并添加到C:/Windows/System32中;二、在matlab安装目录中找到MC...
  • cuiguanjun
  • cuiguanjun
  • 2016-12-22 08:43:07
  • 1029

Matlab下调用Python接口

MATLAB 到 C 语言程序的转换可以由两种途径完成,其一是 MATLAB 自己提供的 C 语言翻译程序 mcc, 另一种是原第 3 方公司 MathTools 开发的 MATCOM。后者出现较早,...
  • u011501388
  • u011501388
  • 2017-11-11 11:25:59
  • 1193

matlab调用python代码

科学计算或者写量化策略有时候需要用matlab去调用python的api,这里推荐一个简单的实现方法。 其实matlab比较新的版本中自带了一个适配组件可以直接调用python系统函数查看一下pyt...
  • u012234115
  • u012234115
  • 2017-08-08 18:00:59
  • 2407

Python调用Matlab的混合编程

Python调用Matlab的混合编程 一. 配置方法 二. 使用方法 三. 测试用例(Python2) 四. 注意点...
  • qq_34216467
  • qq_34216467
  • 2017-04-19 21:39:35
  • 2355
    个人资料
    等级:
    访问量: 388
    积分: 25
    排名: 192万+
    文章分类
    文章存档