Python MATLAB系统命令与pyversion不同
我使用的是MatlabR2019B,在Linux机器上安装并激活了miniconda3。 我已经在命令行Python MATLAB系统命令与pyversion不同,python,matlab,miniconda,Python,Matlab,Miniconda,我使用的是MatlabR2019B,在Linux机器上安装并激活了miniconda3。 我已经在命令行conda activate上激活了conda,然后启动了MATLAB(没有GUI)。我发现系统功能提供的内容与pyversion显示的内容有所不同: >> system('which python') /usr/bin/python ans = 0 >> pyversion version: '3.8' executable:
conda activate
上激活了conda,然后启动了MATLAB(没有GUI)。我发现系统
功能提供的内容与pyversion
显示的内容有所不同:
>> system('which python')
/usr/bin/python
ans =
0
>> pyversion
version: '3.8'
executable: '/home/XYZ/miniconda3/bin/python'
library: '/home/XYZ/miniconda3/lib/libpython3.8.so'
home: '/home/XYZ/miniconda3'
isloaded: 0
我检查了genenv('PATH')
和…/miniconda3/bin以及…/miniconda3/condabin是否在路径中,因为前两个条目是预期的
在命令行上执行哪个python
将给出miniconda3二进制文件
miniconda3路径中的其他一些二进制文件也有类似的观察结果
Q:如何让MATLAB的系统
识别miniconda3二进制文件?
---编辑---
启动MATLAB之前,设置导出MATLAB_SHELL=/bin/bash,显示具有系统功能的正确二进制文件。
然后问题变成了为什么在设置MATLAB_SHELL变量之前,
getenv
和system
不一致?“MATLAB 97”?MATLAB有一个内部版本号,但还没有那么高。“R2019b”部分通常用于传递版本号。您需要确保miniconda二进制目录位于路径上的/usr/bin目录之前。MATLAB并不总是保留shell的路径。谢谢@CrisLuengo。正如我在文章中提到的,miniconda3路径显示为路径中的前两个条目。是的,但是现在做system('echo$PATH')
system
命令启动一个新的shell,它可能从MATLAB进程继承环境变量,也可能不继承。因此,在本例中,解决方案是执行system('PATH=/home/XYZ/miniconda3/bin/:$PATH which python')
令人困惑的是(如编辑中所述),我希望genenv('PATH')
为我提供将在system
调用将使用的任何shell中使用的路径。你的评论起到了作用,但我发现这些函数的行为不一致。