我想从matlab调用python3.4。默认版本是python2.7,当我在matlab中运行pyversion时,它显示:
version: '2.7'
executable: '/usr/bin/python'
library: 'libpython2.7.so.1.0'
home: '/usr'
isloaded: 0
我通过在 matlab 中运行py.list()
进行了测试,它可以工作。
然后我想将版本更改为 python3,所以我运行
pyversion(/usr/bin/python3)
以更改 Python 的版本。
但是现在py.list()
行不通,据说Undefined variable "py" or class "py.list".
.另外,现在我运行pyversion
,信息显示:
version: '3.4'
executable: '/usr/bin/python3.4'
library: ''
home: '/usr'
isloaded: 0
"库"变为空。
我如何解决这个问题才能正确运行 python3.4?
我使用 Ubuntu 14.04,并且已经安装了 python3.4 的 Cython。通过运行find /usr/lib -name libpython*
,我有以下输出
/usr/lib/python3.4/config-3.4dm-x86_64-linux-gnu/libpython3.4.so
/usr/lib/python3.4/config-3.4dm-x86_64-linux-gnu/libpython3.4dm.so
/usr/lib/python3.4/config-3.4dm-x86_64-linux-gnu/libpython3.4dm.a
/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu/libpython3.4.so
/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu/libpython3.4m.a
/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu/libpython3.4m.so
/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu/libpython3.4m-pic.a
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.a
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7-pic.a
/usr/lib/libpeas-1.0/loaders/libpython3loader.so
/usr/lib/libpeas-1.0/loaders/libpythonloader.so
/usr/lib/debug/usr/lib/libpython3.4m.so.1.0-gdb.py
/usr/lib/debug/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
/usr/lib/libreoffice/program/libpythonloaderlo.so
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1
/usr/lib/x86_64-linux-gnu/libpython3.4dm.so.1
/usr/lib/x86_64-linux-gnu/libpython3.4m.a
/usr/lib/x86_64-linux-gnu/libpython2.7.so
/usr/lib/x86_64-linux-gnu/libpython3.4m.so
/usr/lib/x86_64-linux-gnu/libpython3.4dm.so.1.0
/usr/lib/x86_64-linux-gnu/libpython2.7.a
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1
/usr/lib/x86_64-linux-gnu/libpython3.4m.so.1.0
/usr/lib/x86_64-linux-gnu/libpython3.4dm.so
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
/usr/lib/x86_64-linux-gnu/libpython3.4dm.a
恰好在这篇文章的 5 天内遇到了同样的问题。
显然,matlab 使用以下脚本来搜索库:
MATLABROOT/toolbox/matlab/external/interfaces/python/+python/+internal/pyinfo.py
其中 MATLABROOT 是您在安装 matlab 时选择的。
从理论上讲,您可以编辑 pyinfo.py 以在其搜索中包含"/usr/lib/x86_64-linux-gnu"。 例如,通过将另一个方法附加到仅返回"/usr/lib/x86_64-linux-gnu"的搜索位置。 但我不知道这样做的许可/法律/保修后果是什么,所以请自行决定使用。
我遇到了类似的问题(R2015b,Ubuntu(,但没有用公认的答案解决它。我必须执行
python3 MATLABROOT/toolbox/matlab/external/interfaces/python/+python/+internal/pyinfo.py
无需从命令行修改它以使其工作。
运行 python:
>>> import sys
>>> print(sys.executable)
复制答案并在 Matlab 中使用它,如下所示:
>> pyversion('C:Users84757AppDataLocalProgramsPythonPython38python.exe');