Python 安装 matlabengin 时遇到报错:setup.py install is deprecated. !! 以及 Cannot update time stamp of direct

Python 安装 matlabengin 时遇到报错:setup.py install is deprecated. !! 以及 Cannot update time stamp of directory ‘dist\matlabengine.egg-info’ 的解决方案

大概是去年的时候 MATLAB 出了新皮肤。最近为了用 MATLAB 的新皮肤,从 MATLAB R2022b 切换到了 R2024a,这样一来 matlabengin 就需要重新安装了。原本想在同学面前炫一手 Visual Stdio Code 的技,没想到一连吃了两个报错。这里写个博客,一口气把两个问题全给解决了。

以下是我的环境配置:

  • 平台:Windows 10 22H2
  • Python 版本:3.9.10
  • MATLAB 安装路径:D:\Program Files\MATLAB\R2024a

首先按照安装 MATLAB engin 的一般步骤,进入到 MATLAB 安装目录下的 extern\engines\python,进入终端执行:

python -u ./setup.py install

发现出现报错(中间省略一长串不必要的信息,展示最关键的部分):

D:\Python\Python39\Lib\site-packages\setuptools\_distutils\cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!

        ********************************************************************************
        Please avoid running ``setup.py`` directly.
        Instead, use pypa/build, pypa/installer or other
        standards-based tools.

        See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
        ********************************************************************************

        ...

[05/30/24 23:27:50] ERROR    listing git files failed - pretending     git.py:24
                             there aren't any
zip_safe flag not set; analyzing archive contents...
matlab.__pycache__.__init__.cpython-39: module references __file__
matlab.__pycache__.__init__.cpython-39: module references __path__
matlab.engine.__pycache__.__init__.cpython-39: module references __file__

这里一连有好几个工具包都给出了相类似的提示信息,就是希望我不要运行 ./setup.py。具体的解释可以参见给出的博客文章,原文是长篇大论的论述:Why you shouldn’t invoke setup.py directly。简言之就是通过 Python 直接调用 setup.py 安装 Python 工具包的形式已经被淘汰了。这里安装工具包最简单的方法是:

pip install .

直接用一个点代指当前目录下的工具包。

之后遇到了这个报错:

Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Processing d:\program files\matlab\r2024a\extern\engines\python
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [1 lines of output]
      error: Cannot update time stamp of directory 'dist\matlabengine.egg-info'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

[notice] A new release of pip is available: 23.2.1 -> 24.0
[notice] To update, run: python.exe -m pip install --upgrade pip

哎你就说巧不巧吧,昨天我刚刚入门安装使用 R 语言就遇到了类似的问题,所以果断判断出了问题。究其原因,是因为 D:\Program Files 这个路径虽然不在系统盘(C盘)内,但仍然被 Windows 视作程序安装目录 C:\Program Files\ 的一个延伸,属于系统目录的一部分,因此是需要管理员权限的。而且,程序和程序之间相互的目录访问都需要管理员权限。由于直接启动 pip 没有管理员权限,无法将时间戳写入 D:\Program Files\MATLAB\R2024a\extern\engines\python\dist\matlabengine.egg-info。敬请参照我的博客文章 R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点。所以解决的方案就是:

  1. 在 Windows 菜单下重新找到系统终端
  2. 以管理员身份运行
  3. 从新 cd 到 MATLAB 安装目录下的 extern\engines\python 文件夹内执行 pip install .

好在我安装了 MSYS2 zsh 和 gsudo,所以可以直接 sudo pip install .,问题完美解决。

Looking in indexes: https://mirrors.aliyun.com/pypi/simple/
Processing d:\program files\matlab\r2024a\extern\engines\python
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: matlabengine
  Building wheel for matlabengine (pyproject.toml) ... done

    ...

Successfully built matlabengine
Installing collected packages: matlabengine
  Attempting uninstall: matlabengine
    Found existing installation: matlabengine 24.1
    Uninstalling matlabengine-24.1:
      Successfully uninstalled matlabengine-24.1
Successfully installed matlabengine-24.1

当然了,根治这种情况的办法当然是卸载重装。重装 R 尚且还算容易,MATLAB 这个安装体量跟双开门冰箱似的,我只能说大可不必。以后还是当心点吧,对于 Windows 上经常需要在终端下调用的编程语言解释器之类的东西不要装进任何一个盘根目录下的 Program Files 文件夹下面——即使 Windows 鼓励用户这么做,还是应该在此盘根目录下新建一个文件夹。只能说 Windows 的文件系统相对来说比较混乱,Linux 下就完全不会出现这种问题。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值