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

2 visualizaciones (últimos 30 días)
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:
python_test_lib
| __init__.py
| file_a.py
| file_b.py
file_a.py content:
class ClassA:
def __init__(self, num):
self.num = num
file_b.py 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
py.python_test_lib.file_a.ClassA()
But no functions from file_b.py are available. Attempting access yields:
py.python_test_lib.file_b.function_b()
--------------
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

Respuestas (1)

Shadaab Siddiqie
Shadaab Siddiqie el 5 de Ag. de 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
pyversion
pathToFile = fileparts(which('file.py'));\
if count(py.sys.pathToSpeech) == 0
insert(py.sys.path,int32(0),pathToFile);
end
call python function
pyOut = py.file.function_name(inputs to the function)
  1 comentario
Daniel Bronstein
Daniel Bronstein el 5 de Ag. de 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

Iniciar sesión para comentar.

Categorías

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

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by