Unable to resolve the name py.module

조회 수: 80 (최근 30일)
Michael Rego
Michael Rego 2019년 10월 25일
편집: Chen 2021년 5월 14일
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
Tom
Tom 2020년 7월 2일
I have the same issue, did you solve it?
Jordi Macià
Jordi Macià 2020년 7월 16일
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.

댓글을 달려면 로그인하십시오.

답변 (4개)

Dan Hazen
Dan Hazen 2019년 11월 27일
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
Sterling Baird
Sterling Baird 2020년 8월 21일
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)

댓글을 달려면 로그인하십시오.


Shishir Singhal
Shishir Singhal 2020년 7월 28일
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
Ahmed Al-Saffar
Ahmed Al-Saffar 2020년 8월 5일
No it doesn't. The question above never mentioned doing changes. I wish I can delete your answer.

댓글을 달려면 로그인하십시오.


Daniel Toker
Daniel Toker 2019년 10월 31일
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
Akshay Dhyani
Akshay Dhyani 2020년 11월 24일
I am having a same issue. Sometime it works. some time it doesn't

댓글을 달려면 로그인하십시오.


Chen
Chen 2021년 5월 14일
편집: Chen 2021년 5월 14일
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

카테고리

Help CenterFile Exchange에서 Call Python from MATLAB에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by