Unable to resolve the name py.module

145 visualizaciones (últimos 30 días)
Michael Rego
Michael Rego el 25 de Oct. de 2019
Editada: Chen el 14 de Mayo de 2021
I am trying to call a custom python module in Matlab and I have no issues with running the python standard library modules with py.whatever but when I go to run py.mymodule, I get the error "Unable to resolve the name py.mymodule"
I am able to import the module using py.importlib.import_module('mymodule'), but I cannot call the module or the functions within it.
Any ideas?
  8 comentarios
Tom
Tom el 2 de Jul. de 2020
I have the same issue, did you solve it?
Jordi Macià
Jordi Macià el 16 de Jul. de 2020
I also find the same problem. Some times it loads, and others I get this message:
import py.ifcopenshell
Error: The import statement 'import py.ifcopenshell' cannot be found or cannot be imported. Imported names must end with '.*' or be fully qualified.

Iniciar sesión para comentar.

Respuestas (4)

Dan Hazen
Dan Hazen el 27 de Nov. de 2019
Just because I was caught up with a similar issue that was due to my inexperience:
I had a Python file named testme with a function (def testme) inside of it that printed hello world.
To run in MATLAB, I had to do py.testme.testme() to get it to execute, otherwise I was getting the error you described above. The issue seems to be with referencing the module and then the function within.
  1 comentario
Sterling Baird
Sterling Baird el 21 de Ag. de 2020
This suggestion seems to work for me. Thank you!
>> py.scipy.odr()
Unable to resolve the name py.scipy.odr.
>> py.scipy.odr.odr()
Python Error: TypeError: odr() missing required argument 'fcn' (pos 1)

Iniciar sesión para comentar.


Shishir Singhal
Shishir Singhal el 28 de Jul. de 2020
Hi,
Everytime when you make changes in a python funtion. You need to reload it again into the MATLAB environments using "py.reload("<python_module>")".
As a workaround, please follow the steps given in the documentation here: https://in.mathworks.com/help/matlab/matlab_external/call-modified-python-module.html
Hope it helps!!!
Thanks.
  1 comentario
Ahmed Al-Saffar
Ahmed Al-Saffar el 5 de Ag. de 2020
No it doesn't. The question above never mentioned doing changes. I wish I can delete your answer.

Iniciar sesión para comentar.


Daniel Toker
Daniel Toker el 31 de Oct. de 2019
I am running into this same problem, but only sometimes - sometimes py.mymodule works, and other times the exact same code turns up this error. Any progress with this?
  1 comentario
Akshay Dhyani
Akshay Dhyani el 24 de Nov. de 2020
I am having a same issue. Sometime it works. some time it doesn't

Iniciar sesión para comentar.


Chen
Chen el 14 de Mayo de 2021
Editada: Chen el 14 de Mayo de 2021
I am new to Python as well, but I found these solutions after spending some time of debugging. There are two possible reasons for "Unable to resolve the name py.mymodule"
Reason 1:
your python script is not found by the interpreter.
Solution: copy your script into a folder
<your correct Python version folder>\Python38\Lib\site-packages\<mymodule>
Create an empty dummy file __init__.py
Can someone tell me if there's another way to do it?
Reason 2:
Matlab is NOT built to run a python module, like how you would run it in a Python IDE:
run mymodule
You should create a function inside mymodule.py
example,
inside mymodule.py:
....
def mymodfunc ():
... <python codes>
Then run this in matlab:
py.mymodule.mymodfunc(<some arguments>)
According to instructions, whenever you modify any python scripts, remember to reload them, as per instructions in topic:
Reload Modified User-Defined Python Module
However, this doesn't work directly as per claimed, you have to wrap the reload module within a function. Apparently, this is a known bug that still hasn't been fix for some time:
function reloadPy()
warning('off','MATLAB:ClassInstanceExists')
clear classes
mod = py.importlib.import_module('mymodule');
py.importlib.reload(mod);
end

Categorías

Más información sobre Call Python from MATLAB en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by