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

54 Ansichten (letzte 30 Tage)
Eric Laurendeau
Eric Laurendeau am 6 Jan. 2026 um 4:45
Bearbeitet: Eric Laurendeau am 9 Jan. 2026 um 15:21
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 Kommentare
Broy
Broy am 9 Jan. 2026 um 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 am 9 Jan. 2026 um 15:18
Bearbeitet: Eric Laurendeau am 9 Jan. 2026 um 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.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Call Python from MATLAB finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by