如何在Matlab中从虚拟环境执行Python代码

7
我正在创建一个用于研究的Matlab工具箱,并且需要执行Matlab代码和Python代码。
我希望允许用户从Matlab中执行Python代码。问题在于,如果我直接执行,我必须在Python环境中安装所有内容,并且我想使用virtualenv避免这种情况。但问题是,我不知道如何告诉Matlab使用创建的虚拟环境。

2
你不能传递虚拟环境 Python 可执行文件的完整路径吗? - Tales Pádua
@TalesPádua 是的,我没有意识到,谢谢! - maximovs
2个回答

8

您可以在从 MATLAB 调用 Python 之前修改 MATLAB 中的 PATH 环境变量。

% Modify the system PATH so it finds the python executable in your venv first
setenv('PATH', ['/path/to/my/venv/bin', pathsep, getenv('PATH')])

% Call your python script
system('python myscript.py')

更好的方法是指定Python二进制文件的完整路径。

system('/path/to/my/venv/bin/python myscript.py')

3

如评论中@tales-pádua所建议,您可以使用pyversion命令来设置您正在使用的Python可执行文件的路径(在尝试从Matlab调用Python之前)。

这可以通过使用matlabrc.m文件自动化:

python = '.local/bin/python';
if exist(python, 'file')
    pyversion(python)
end

这是从Matlab 2020a开始支持的。推荐的命令是[pyenv][1]。 [1]: https://mathworks.com/help/matlab/ref/pyenv.html - Vasco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接