Unable to resolve the name py.module

82 Ansichten (letzte 30 Tage)
Michael Rego
Michael Rego am 25 Okt. 2019
Bearbeitet: Chen am 14 Mai 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 Kommentare
Tom
Tom am 2 Jul. 2020
I have the same issue, did you solve it?
Jordi Macià
Jordi Macià am 16 Jul. 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.

Melden Sie sich an, um zu kommentieren.

Antworten (4)

Dan Hazen
Dan Hazen am 27 Nov. 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 Kommentar
Sterling Baird
Sterling Baird am 21 Aug. 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)

Melden Sie sich an, um zu kommentieren.


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

Melden Sie sich an, um zu kommentieren.


Daniel Toker
Daniel Toker am 31 Okt. 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 Kommentar
Akshay Dhyani
Akshay Dhyani am 24 Nov. 2020
I am having a same issue. Sometime it works. some time it doesn't

Melden Sie sich an, um zu kommentieren.


Chen
Chen am 14 Mai 2021
Bearbeitet: Chen am 14 Mai 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

Kategorien

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

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by