invalid mode: ‘rU‘ while trying to load binding.gyp 解决 node-gyp 与 python 版本不匹配报错

  • 在执行 npm i 时报错 ValueError: invalid mode: 'rU' while trying to load binding.gyp

    这个错误是因为 Python 3 不支持 rU 模式。rUPython 2 的模式,表示以通用换行符读取文件。为了解决这个问题,可以通过升级 node-gyp 或降低 python 版本来解决。

    # 升级 node-gyp
    $ npm install -g node-gyp
    

    但是非特殊情况,更推荐降低 Python 版本来解决,因为有的项目是老项目,它必须依赖低版本 python 来执行,这样出现的额外问题会比升级遇到的问题少。

  • node-gyp 需要 python2.5 < v < 3.0 的版本,所以如果本机是 python3 以上的版本,可以拷贝弄两个版本。附 Python 使用 pyenv 多版本管理

  • 安装好对应的 python 版本后,输出一下当前版本号,默认会使用当前设置的 python 版本,也可以指定版本。

  • 处理好版本问题后,需要 清理和重建,删除 node_modules 目录和 package-lock.json 文件,然后重新安装依赖:

    $ rm -rf node_modules package-lock.json
    $ npm install
    

    安装好项目依赖后,python 版本还是可以随意切换的,因为主要是在安装项目依赖的时候需要用到。

  • 查看配置

    $ npm config list
    
  • 指定版本

    # 指定目录,如果不指定,默认使用当前系统环境的得全局 python 版本
    $ npm config set python  /Users/xxx/.pyenv/versions/2.7.18/bin/python
    
  • 删除配置

    # 移除后就使用全局 python 版本
    $ npm config delete python
    

猜你喜欢

转载自blog.csdn.net/zz00008888/article/details/142522106