python中使用matlab时显示版本错误
一、问题描述
本人希望能通过Python调用Matlab引擎 (参考文章 python调用matlab程序 pycharm),在输入 python setup.py install 命令时出现问题。
(python38) D:\Program Files\MATLAB\R2021b\extern\engines\python>python setup.py install --user
E:\anconda3\envs\python38\lib\site-packages\setuptools\dist.py:543: UserWarning: The version specified ('R2021b') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.
warnings.warn(
E:\anconda3\envs\python38\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
warnings.warn(
E:\anconda3\envs\python38\lib\site-packages\setuptools\command\easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
warnings.warn(
Traceback (most recent call last):
File "setup.py", line 80, in <module>
setup(
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\core.py", line 185, in setup
return run_commands(dist)
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\core.py", line 201, in run_commands
dist.run_commands()
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\dist.py", line 969, in run_commands
self.run_command(cmd)
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\dist.py", line 1208, in run_command
super().run_command(command)
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\dist.py", line 988, in run_command
cmd_obj.run()
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\command\install.py", line 74, in run
self.do_egg_install()
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\command\install.py", line 123, in do_egg_install
self.run_command('bdist_egg')
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\cmd.py", line 318, in run_command
self.distribution.run_command(command)
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\dist.py", line 1208, in run_command
super().run_command(command)
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\dist.py", line 987, in run_command
cmd_obj.ensure_finalized()
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\cmd.py", line 111, in ensure_finalized
self.finalize_options()
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\command\bdist_egg.py", line 93, in finalize_options
ei_cmd = self.ei_cmd = self.get_finalized_command("egg_info")
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\cmd.py", line 305, in get_finalized_command
cmd_obj.ensure_finalized()
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\_distutils\cmd.py", line 111, in ensure_finalized
self.finalize_options()
File "E:\anconda3\envs\python38\lib\site-packages\setuptools\command\egg_info.py", line 219, in finalize_options
parsed_version = parse_version(self.egg_version)
File "E:\anconda3\envs\python38\lib\site-packages\pkg_resources\_vendor\packaging\version.py", line 266, in __init__
raise InvalidVersion(f"Invalid version: '{version}'")
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: 'R2021b'x
显示错误
二、解决方案
原因是setuptools版本过高。setuptools在58.0版本以后弃用了一些方法,导致matlab.engine中的一些命令无法运行。在cmd中输入如下命令将setuptools降版本至58.0版本即可。
pip install setuptools==58.0
在安装完成后,再次运行 python setup.py install 命令,看到如下内容时,安装成功。
(python38) D:\Program Files\MATLAB\R2021b\extern\engines\python>python setup.py install --user running install running build running build_py creating build creating build\lib creating build\lib\matlab copying dist\matlab\mlarray.py -> build\lib\matlab copying dist\matlab\mlexceptions.py -> build\lib\matlab copying dist\matlab\__init__.py -> build\lib\matlab creating build\lib\matlab\engine copying dist\matlab\engine\basefuture.py -> build\lib\matlab\engine copying dist\matlab\engine\engineerror.py -> build\lib\matlab\engine copying dist\matlab\engine\enginehelper.py -> build\lib\matlab\engine copying dist\matlab\engine\enginesession.py -> build\lib\matlab\engine copying dist\matlab\engine\fevalfuture.py -> build\lib\matlab\engine copying dist\matlab\engine\futureresult.py -> build\lib\matlab\engine copying dist\matlab\engine\matlabengine.py -> build\lib\matlab\engine copying dist\matlab\engine\matlabfuture.py -> build\lib\matlab\engine copying dist\matlab\engine\__init__.py -> build\lib\matlab\engine creating build\lib\matlab\_internal copying dist\matlab\_internal\mlarray_sequence.py -> build\lib\matlab\_internal copying dist\matlab\_internal\mlarray_utils.py -> build\lib\matlab\_internal copying dist\matlab\_internal\__init__.py -> build\lib\matlab\_internal running install_lib creating C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab creating C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\basefuture.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\engineerror.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\enginehelper.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\enginesession.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\fevalfuture.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\futureresult.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\matlabengine.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\matlabfuture.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\_arch.txt -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\engine\__init__.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine copying build\lib\matlab\mlarray.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab copying build\lib\matlab\mlexceptions.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab creating C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\_internal copying build\lib\matlab\_internal\mlarray_sequence.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\_internal copying build\lib\matlab\_internal\mlarray_utils.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\_internal copying build\lib\matlab\_internal\__init__.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\_internal copying build\lib\matlab\__init__.py -> C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\basefuture.py to basefuture.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\engineerror.py to engineerror.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\enginehelper.py to enginehelper.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\enginesession.py to enginesession.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\fevalfuture.py to fevalfuture.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\futureresult.py to futureresult.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\matlabengine.py to matlabengine.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\matlabfuture.py to matlabfuture.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\engine\__init__.py to __init__.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\mlarray.py to mlarray.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\mlexceptions.py to mlexceptions.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\_internal\mlarray_sequence.py to mlarray_sequence.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\_internal\mlarray_utils.py to mlarray_utils.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\_internal\__init__.py to __init__.cpython-38.pyc byte-compiling C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlab\__init__.py to __init__.cpython-38.pyc running install_egg_info Writing C:\Users\Lenovo\AppData\Roaming\Python\Python38\site-packages\matlabengineforpython-R2021b-py3.8.egg-info

浙公网安备 33010602011771号