如何我进口python库在一个python脚本调用Matlab ?

213(30天)
这是一个人的问题主要是在python中,和有一些Matlab经验(但不是在Matlab环境的细微差别)。
我有一个自定义python模块的pymodule os (mac)和我从在Matlab程序需要调用它。我已经把它在我的Matlab工作目录。里面是一个脚本模块需要进口一些标准和pip-installed机库,如“urllib”和“boto3”。在我的例子中,urllib标准与我的蟒蛇3.6安装来,我和conda boto3安装。
在这两种情况下,Matlab可以直接调用这些模块,他们的工作(我可以使用它们)。从matlab cmd窗口:
mod = py.importlib.import_module (“boto3”);
mod = py.importlib.import_module (“urllib”);
然而,当我打电话给我的python模块测试。py(该方法测试)的测试。在Matlab的m”:
路径=' /用户/ drewthayer / Dropbox /道路/ /当前的;
脚本=“test.py”;
cmdstr = sprintf (“python % s % s”、路径、脚本);
(地位、cmdout) =系统(cmdstr,“回声”);%回波可选
如果状态= = 0
流(的数据形状= % s \ n ',cmdout);
结束
我得到以下错误:
> > run test.m
ans =
Python模块的属性:
splitattr:(1×1 py.function]
ParseResult:(1×1 py.type]
% % % % %等等……(许多属性和方法)
<模块“urllib.parse”' / anaconda3 / lib / python3.6 / urllib / parse.py”>
回溯(最近的电话):
文件“/用户/ drewthayer / Dropbox /道路/ /现在/ test.py”、线10,在<模块>
进口pymodule.iq_parser
文件“/用户/ drewthayer / Dropbox /道路/ /当前/ pymodule / iq_parser.py”、线7,在<模块>
。进口s3io
文件“/用户/ drewthayer / Dropbox /道路/ /当前/ pymodule / s3io.py”、线9,在<模块>
进口boto3
ImportError:没有模块名叫boto3
通过python,似乎Matlab可以识别和进口urllib,但不能识别和进口boto3,即使它可以导入boto3通过py.importlib.import_module (boto3)例程。
在调试,我尝试以下步骤:
  • 添加路径urllib和boto3 PYTHONPATH美元~ /。bash_profile(他们visibile python通过sys.path)
  • 手动添加boto3道路系统。路径测试。py脚本,如。
sys.path.insert (1,' / anaconda3 / lib / python3.6 /网站/ boto3”)
  • 手动添加在matlab脚本py.sys boto3路径。路径(python的路径已知Matlab)
> > modpath =' / anaconda3 / lib / python3.6 /网站/ boto3”;
从matlab %方法文档
P = py.sys.path;
如果计数(P, modpath) = = 0
插入(P, int32 (0) modpath);
结束
任何帮助将不胜感激

答案(3)

吉姆Hokanson
吉姆Hokanson 2022年11月29日
只是在一些Python / MATLAB的事情,看到这个问题。问题是,你正在一个完全无关的系统调用的Python解释器MATLAB已经加载到“py”
您需要运行通过py脚本包。
你可以做新版本的MATLAB pyrun或pyrunfile。然而,在旧版本不存在(新2021年b ? ? ?)。看起来你将需要导入代码模块和执行。
测试= py.importlib.import_module (“测试”);
注意,导入“模块”是我假设足以运行它但是你可能想要将您的代码封装在一个函数,输入后被调用。

拉斐尔Reboucas
拉斐尔Reboucas 2021年1月19日
我的解决方案:
%的简单方法加载你的图书馆
拷贝文件(my_library_file_path pwd,“f”);
%有必要装载库
py.my_library.any_method_or_function ();
删除“my_library.py”;
现在,您的Python库加载使用在任何目录。
3评论
雷诺Filla
雷诺Filla 2021年4月23日
对不起,但我不能让这个解决方案的工作。你能显示这将使matplotlib访问在Python中Matlab ?

登录置评。


类别

找到更多的在从MATLAB调用Python帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!