Clear Filters
Clear Filters

Unrecognized python functions when using same-module imports from a custom package

1 view (last 30 days)
I am unable to get MATLAB to recognize functions within my custom python module if the file is importing anything from another module within the same package.
File Structure:
| content:
class ClassA:
def __init__(self, num):
self.num = num content
from file_a import ClassA
def function_b():
ca = ClassA(3)
print(f'My class A: {ca.num}')
In this toy example, the package is partially imported such that ClassA is available through the interperter via
But no functions from are available. Attempting access yields:
Unable to resolve the name py.python_test_lib.file_b.function_b()
I've tried various syntaxes for the import statement including
import ClassA
from .file_a import ClassA
from python_test_lib.file_a import ClassA
import file_a

Answers (1)

Shadaab Siddiqie
Shadaab Siddiqie on 5 Aug 2021
From my understanding you want to call python functions in the matlab code. You can do this by setting python path and calling functions as follows:
Set up Python and Python path
pathToFile = fileparts(which(''));\
if count(py.sys.pathToSpeech) == 0
call python function
pyOut = py.file.function_name(inputs to the function)
  1 Comment
Daniel Bronstein
Daniel Bronstein on 5 Aug 2021
The python path is already set appropriately. As I said, I am create an instance of ClassA through the interperter. However, function_b is not available and I believe that is due to the fact that it is importing from file_a within the same package. My question is what is the appropriate syntax/file layout to be able to handle these inter-package imports?
If you try setting up the files exactly as described the problem should be evident

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!