Matlab requires restart before changes in Python code changes are applied
74 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Daniel Stolzberg
el 7 de Ag. de 2020
Respondida: MONIKA
el 3 de En. de 2024
Background:
I am running Matlab 2020a and Python 3.8 on Win 10. I am launching Matlab from an Anaconda prompt in the mne environment (https://mne.tools/stable/index.html).
I am calling a Python function using the standard syntax - ex: r = py.test.score(X,y).
The Issue:
I make changes to the Python code, save, and runfile which are immediately available in my Python ide (Spyder), but Matlab does run the latest version of the Python function. I have to restart Matlab - using the Anaconda prompt in the mne environment - each time I make a change to my Python code. Upon restart, the updated Python code is used by Matlab.
I update the current Python path prior to calling my Python function using:
if count(py.sys.path,'')==0
insert(py.sys.path,int32(0),'');
end
I have tested this with a basic "Hello World" type Python function and this is my experience.
I am not sure how to further troubleshoot this issue.
Is there something I may be doing incorrectly?
Thanks in advance,
Daniel
2 comentarios
Stijn Haenen
el 7 de Ag. de 2020
Is there an .asv file of the python script saved in your working folder. The .asv files are used as backup while matlab is running. Maybe you should change the .asv files of the python script.
Respuesta aceptada
Sean de Wolski
el 7 de Ag. de 2020
Try this
clear classes
m = py.importlib.import_module('yourlib');
py.importlib.reload(m);
2 comentarios
Ronan Fleming
el 12 de Abr. de 2021
https://nl.mathworks.com/help/releases/R2021a/matlab/matlab_external/out-of-process-execution-of-python-functionality.html
Más respuestas (3)
Chen
el 14 de Mayo de 2021
Sean's answer will not work without wrapping a function around it.
Apparently, it's a known bug
function reloadPy()
warning('off','MATLAB:ClassInstanceExists')
clear classes
mod = py.importlib.import_module('mat');
py.importlib.reload(mod);
end
2 comentarios
Sean de Wolski
el 17 de Mayo de 2021
I might suggest modifying the warning part to this to restore state after.
s = warning('off','MATLAB:ClassInstanceExists');
restorer = onCleanup(@()warning(s));
Akshay Jajoo
el 8 de Sept. de 2021
I am getting the following error: Unable to resolve the name py.importlib.reload.
MONIKA
el 3 de En. de 2024
function reloadPy() warning('off','MATLAB:ClassInstanceExists') clear classes mod = py.importlib.import_module('mat'); py.importlib.reload(mod);
0 comentarios
MONIKA
el 3 de En. de 2024
function reloadPy() warning('off','MATLAB:ClassInstanceExists') clear classes mod = py.importlib.import_module('mat'); py.importlib.reload(mod);
0 comentarios
Ver también
Categorías
Más información sobre Call Python from MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!