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 下就完全不会出现这种问题。

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

  1. Python安装pip时, 报错:zipimport.ZipImportError: can't decompress data; zlib not available

    解决办法: 1.安装依赖zlib.zlib-devel 2.重新编译安装Python 具体步骤: 1 到python安装目录下,运行./configure 2 编辑Modules/Setup文件 vi ...

  2. 安装vue-cli时-4058报错的解决方法

    一.报错信息 安装vue-cli时-4058报错 二.解决办法 1.安装淘宝镜像 npm --registry https://registry.npm.taobao.org info undersc ...

  3. Python 安装MySQLdb模块遇到报错及解决方案:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

    一.问题 系统:win7 64位 在下载MySQL-python-1.2.5.zip,使用python setup.py install 安装时,出现以下报错: _mysql.c(42) : fata ...

  4. python安装模块的时候报错error: command 'gcc' failed with exit status 1

    [情况] 在写Python代码的时候,需要用到psutil模块,需要安装. 但是在安装时,报错:error: command 'gcc' failed with exit status 1 [解决步骤 ...

  5. 按照教程自动安装RFNoC时.在使用pip安装pybombs时出现报错,解决办法

    $ sudo apt-get install git $ sudo apt-get install python-setuptools python-dev python-pip build-esse ...

  6. 解决小米手机USB安装apk时AS报错:INSTALL_FAILED_USER_RESTRICTED

    今天,直接用AS在小米手机上运行安装的时候总是报错:INSTALL_FAILED_USER_RESTRICTED,于是乎,通过以下方式解决: 在开发者选项将USB安装打开,然后,哈,解决了.记录一下.

  7. pip安装psutil模块时候报错:yum install python-devel mysql-devel zlib-devel openssl-devel

    yum install python-devel mysql-devel zlib-devel openssl-devel [root@localhost software]# pip install ...

  8. Python安装第三方库,报错超时: Read timed out.

    1.安装beautifulsoup4 >pip install beautifulsoup4 报错超时: Read timed out. 2.解决办法:pip --default-timeout ...

  9. 安装nginx环境(含lua)时遇到报错ngx_http_lua_common.h:20:20: error: luajit.h: No such file or directory的解决

    下面是安装nginx+lua环境时使用的相关模块及版本,ngx_devel_kit和lua-nginx-module模块用的都是github上最新的模块.并进行了LuaJIT的安装. #Install ...

  10. pip安装selenium时,报错“You are using pip version 10.0.1, however version 18.0 is available.”的问题

    pip安装selenium,pip install selenium 类型这样错误 1  原因可能不是以管理员身份运行cmd安装selenium 2  解决方式 也是要管理员身份运行 重点在最后一句 ...

随机推荐

  1. [FAQ] Phpstorm 代码提示功能失效问题

    如果是之前有代码提示,中间突然不出现提示了,那么考虑重建一下项目索引. 示例: Refer:Phpstorm代码提示 Link:https://www.cnblogs.com/farwish/p/13 ...

  2. Golang 与 JS 的字符串截取大同小异

    Golang 和 JS 的字符串截取都可以利用索引定位的方式. Golang: str := "abcdef" sub := str[1: 2] JS: const str = ' ...

  3. WPF 动画实战 点击时显示圆圈淡出效果

    本文告诉大家一个有趣的动画,在鼠标点击的时候,在点击所在的点显示一个圆圈,然后这个圆圈做动画变大,但是颜色变淡的效果.本文的控件可以让大家将对应的容器放在自己应用里面就能实现这个效果 这个效果特别简单 ...

  4. Ubuntu 20.04版本安装k8s控制节点与控制节点升级

    一.环境配置 服务器配置:2核4G IP:192.168.10.23 主机名:master4将改主机加入此 集群 # 1.修改主机名 hostnamectl set-hostname master4 ...

  5. 【简说Python WEB】Form提交表单

    目录 [简说Python WEB]Form提交表单 安装flask-wtf 代码树 app.py源码中表单类: index.html的源码修改:渲染form表单 app.py源码中from表单处理 会 ...

  6. ITIL4之四维模型

    ITIL4的一个核心概念.它定义了四个维度(图中的1~4),这四个维度旨在确保组织能够在多方面考虑其服务提供,从而更有效地创造和交付价值. 四维模型的整合流程 确立价值载体:明确信息服务提供商的价值主 ...

  7. vscode关于json文件添加注释报错处理

  8. Splashtop获5000万美元新投资 成为远程桌面行业独角兽

    加利福尼亚州圣何塞,2021 年 1 月 27 日 - 下一代远程访问和远程支持领域的新兴领导者 Splashtop Inc. 完成了新一轮的 5000 万美元融资,其估值已超过了 10 亿美元的独角 ...

  9. 如何使用Splashtop在家里进行有效的新人入职培训

    编辑搜图 请点击输入图片描述 今天的新闻有点不简单,不得了. 简而言之,利用Splashtop可以在家里进行有效的新人入职培训.最棒的地方就在于--两个用户可以远程访问同一台计算机,并且可以看到彼此的 ...

  10. C语言:++ --优先级的深入理解

    #include <stdio.h> int main() { int num = 11; int result = ++num > 11 && --num < ...