使用自定义包中的相同模块导入时无法识别的python函数

2次浏览(过去30天)
如果文件从同一包中的另一个模块导入任何东西,我无法让MATLAB识别自定义python模块中的函数。
文件结构:
python_test_lib
|__init__.py
| file_a.py
| file_b.py
file_a.py内容:
ClassA:
def__init__(自我,num):
自我。Num = Num
file_b.py内容
file_a导入ClassA
deffunction_b ():
ca = a类(3)
print(f' my class A: {ca.num}')
在这个简单的例子中,包被部分导入,使得类a可以通过解释器via访问
py.python_test_lib.file_a.ClassA ()
但是file_b.py中没有可用的函数。尝试访问会产生:
py.python_test_lib.file_b.function_b ()
--------------
不能要解析名称py.python_test_lib.file_b.function_b()
我已经尝试了导入语句的各种语法,包括
进口ClassA
.file_a导入类a
python_test_lib。file_a进口ClassA
进口file_a

答案(1)

Shadaab Siddiqie
Shadaab Siddiqie 2021年8月5日
根据我的理解,你想在matlab代码中调用python函数。你可以通过设置python路径并调用如下函数来实现:
设置Python和Python路径
pyversion
pathToFile = fileparts(它(“file.py”)); \
如果count(py.sys.pathToSpeech) == 0
插入(py.sys.path int32 (0) pathToFile);
结束
调用python函数
pyOut = py.file。函数_name(inputs to the函数
1评论
丹尼尔布罗斯特
丹尼尔布罗斯特 2021年8月5日
python路径已经适当设置。如前所述,我通过解释器创建了ClassA的实例。然而,function_b不可用,我相信这是因为它是从同一个包中的file_a导入的。我的问题是什么是适当的语法/文件布局能够处理这些包间导入?
如果您尝试完全按照描述设置文件,问题就会很明显

登录评论。

下载188bet金宝搏


释放

R2019b

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!