Unable to resolve the name py.module
76 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Jordi Macià
il 16 Lug 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.
Risposte (4)
Dan Hazen
il 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 Commento
Sterling Baird
il 21 Ago 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)
Shishir Singhal
il 28 Lug 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 Commento
Ahmed Al-Saffar
il 5 Ago 2020
No it doesn't. The question above never mentioned doing changes. I wish I can delete your answer.
Daniel Toker
il 31 Ott 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 Commento
Chen
il 14 Mag 2021
Modificato: Chen
il 14 Mag 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
0 Commenti
Vedere anche
Categorie
Scopri di più su Call Python from MATLAB in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!