在Matlab中使用pyrunfile导入Python模块吗?

0 投票
1 回答
43 浏览
提问于 2025-04-12 17:37

我有一个Python脚本,它需要一些外部包,代码如下:

#script stored as get_command_Voltage.py

import pyabf
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

#load data
def get_command_V(filepath):
    abfdata = pyabf.ABF(filepath)
    return abfdata


commandv = get_command_V(filepath1)

我想把Python的输出结果,也就是commandv,存到Matlab里的变量commandV中。

我在Matlab里写了以下代码:

pyabf = py.importlib.import_module('pyabf');

filepath_this = "..." %full file path

commandV = pyrunfile("get_command_Voltage.py","commandv",filepath1 = filepath_this)

但是它给我返回了这个错误:

ModuleNotFoundError: 没有名为'pyabf'的模块

Warning: Unable to load Python object. Saving (serializing) Python objects into a MAT-file is not supported. 
> In vclampanal (line 25) 
Error using <frozen importlib>_find_and_load_unlocked (line 1140)
Python Error: ModuleNotFoundError: No module named 'pyabf'

Error in <frozen importlib>_find_and_load (line 1176)

Error in <frozen importlib>_gcd_import (line 1204)

Error in __init__>import_module (line 126)
 

我只是想知道怎么解决这个问题,运行那些依赖于外部包的Python脚本。

任何建议都非常感谢!

谢谢

1 个回答

1

MATLAB只能访问在pyenv指定的Python环境中安装的Python包。如果MATLAB指向的是其他的Python安装,它就无法加载或识别在其他环境中(比如你的Anaconda环境)安装的包。

第一步:打开一个终端或Anaconda提示符。

第二步:激活安装了pyabf的Anaconda环境(如果你使用的是特定环境,没用的话可以跳过这一步)。

第三步:在macOS或Linux上运行

which python

或者在Windows上运行

where python

来找到当前环境中Python可执行文件的路径。

第四步:复制Python可执行文件的路径。它应该类似于

/Users/sayakaminegishi/opt/anaconda3/bin/python

(对于macOS/Linux)或者在Windows上类似的路径。

第五步:打开MATLAB,使用pyenv命令将Python可执行文件的路径设置为你在上一步找到的路径。

pyenv('Version', '/Users/sayakaminegishi/opt/anaconda3/bin/python');

第六步:在MATLAB中再次运行pyenv,确认它现在使用的是正确的Python版本和路径。

撰写回答