在Matlab中使用pyrunfile导入Python模块吗?
我有一个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版本和路径。