Using Python with the MATLAB engine, how can I supress the warning

54 views (last 30 days)
I'm using Python to fetch some block's mask parameter. Those parameter are string with no evaluation of value needed.
Every time I try to load the model, I receive those warning:
Warning: Error evaluating 'PreLoadFcn' callback of block_diagram 'LibraryTest'.
Callback string is 'LibraryTest_init;'
> In load_system>i_load_system (line 44)
In load_system (line 20)
Warning: Unrecognized function or variable 'LibraryTest_init'.
> In load_system>i_load_system (line 44)
The Python script is not in the model folder, as such, those warning are expected as the init file is with the model.
Is there a way to just supress those warning in python so that they don't print?
  4 Comments
Broy
Broy on 9 Jan 2026 at 8:15
Use nargout = 0 to explicitly tell Python not to expect a return value.
eng = matlab.engine.start_matlab()
try:
% 1. Save the current warning state directly into the MATLAB workspace.
eng.eval("previousState = warning;", nargout=0)
% 2. Turn off warnings.
eng.warning('off', 'all', nargout=0)
% Rest of the Code
finally:
% 3. Restore the warning state
if eng.workspace.get('previousState'):
eng.eval("warning(previousState);", nargout=0)
% Rest of the Code
Eric Laurendeau
Eric Laurendeau on 9 Jan 2026 at 15:18
Edited: Eric Laurendeau on 9 Jan 2026 at 15:19
Thanks you! That fixed the problem. The only problem left is that the line
if eng.workspace.get('previousState'):
give the error: 'MatlabWorkSpace' object has no attribute 'get'
I tried:
if eng.workspace.get('previousState'): % Give the error: 'MatlabWorkSpace' object has no attribute 'get'
if "previousState" in eng.worspace: % Give the error: Variable name must be string, not int
if eng.exist('previousState', 'var'): % Still print some information. If set with nargout = 0, return nothing so not usefull
if eng.workspace["previousState"] != []: % Give the error: only a scalar struct can be returned from MATLAB
So I simply used the basic try/except:
try:
eng.eval("warning(previousState);", nargout=0)
except e:
warnings.warn(f"Error while restoring the previous warning state: \n{e}")
Considering that it is in the same script and same function, if the variable does not exist, there is another problem.

Sign in to comment.

Answers (0)

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!