运行 npm install 时未找到 distutils

问题描述 投票:0回答:3

我是一名 NODE 新手,正在尝试安装和运行 https://github.com/DylanAkp/AirtagsAnywhere

我使用的是装有 Python 3.12 的全新 M2 Mac

节点 18.18 和 NPM 9.8.1

并获得长流。我理解警告,但无法遵循错误。

有人能指出我正确的方向吗?

npm ERR! code 1
    npm ERR! path /Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass
    npm ERR! command failed
    npm ERR! command sh -c node scripts/build.js
    npm ERR! Building: /usr/local/bin/node /Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp verb cli [
    npm ERR! gyp verb cli   '/usr/local/bin/node',
    npm ERR! gyp verb cli   '/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/bin/node-gyp.js',
    npm ERR! gyp verb cli   'rebuild',
    npm ERR! gyp verb cli   '--verbose',
    npm ERR! gyp verb cli   '--libsass_ext=',
    npm ERR! gyp verb cli   '--libsass_cflags=',
    npm ERR! gyp verb cli   '--libsass_ldflags=',
    npm ERR! gyp verb cli   '--libsass_library='
    npm ERR! gyp verb cli ]
    npm ERR! gyp info using [email protected]
    npm ERR! gyp info using [email protected] | darwin | arm64
    npm ERR! gyp verb command rebuild []
    npm ERR! gyp verb command clean []
    npm ERR! gyp verb clean removing "build" directory
    npm ERR! gyp verb command configure []
    npm ERR! gyp verb find Python Python is not set from command line or npm configuration
    npm ERR! gyp verb find Python Python is not set from environment variable PYTHON
    npm ERR! gyp verb find Python checking if "python3" can be used
    npm ERR! gyp verb find Python - executing "python3" to get executable path
    npm ERR! gyp verb find Python - executable path is "/Library/Frameworks/Python.framework/Versions/3.12/bin/python3"
    npm ERR! gyp verb find Python - executing "/Library/Frameworks/Python.framework/Versions/3.12/bin/python3" to get version
    npm ERR! gyp verb find Python - version is "3.12.0"
    npm ERR! gyp info find Python using Python version 3.12.0 found at "/Library/Frameworks/Python.framework/Versions/3.12/bin/python3"
    npm ERR! gyp verb get node dir no --target version specified, falling back to host node version: 18.18.0
    npm ERR! gyp verb command install [ '18.18.0' ]
    npm ERR! gyp verb install input version string "18.18.0"
    npm ERR! gyp verb install installing version: 18.18.0
    npm ERR! gyp verb install --ensure was passed, so won't reinstall if already installed
    npm ERR! gyp verb install version is already installed, need to check "installVersion"
    npm ERR! gyp verb got "installVersion" 9
    npm ERR! gyp verb needs "installVersion" 9
    npm ERR! gyp verb install version is good
    npm ERR! gyp verb get node dir target node version installed: 18.18.0
    npm ERR! gyp verb build dir attempting to create "build" dir: /Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass/build
    npm ERR! gyp verb build dir "build" dir needed to be created? Yes
    npm ERR! gyp verb build/config.gypi creating config file
    npm ERR! gyp verb build/config.gypi writing out config file: /Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass/build/config.gypi
    npm ERR! gyp verb config.gypi checking for gypi file: /Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass/config.gypi
    npm ERR! gyp verb common.gypi checking for gypi file: /Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass/common.gypi
    npm ERR! gyp verb gyp gyp format was not specified; forcing "make"
    npm ERR! gyp info spawn /Library/Frameworks/Python.framework/Versions/3.12/bin/python3
    npm ERR! gyp info spawn args [
    npm ERR! gyp info spawn args   '/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/gyp/gyp_main.py',
    npm ERR! gyp info spawn args   'binding.gyp',
    npm ERR! gyp info spawn args   '-f',
    npm ERR! gyp info spawn args   'make',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass/build/config.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/addon.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/Users/airtag/Library/Caches/node-gyp/18.18.0/include/node/common.gypi',
    npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
    npm ERR! gyp info spawn args   '-Dvisibility=default',
    npm ERR! gyp info spawn args   '-Dnode_root_dir=/Users/airtag/Library/Caches/node-gyp/18.18.0',
    npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp',
    npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/airtag/Library/Caches/node-gyp/18.18.0/<(target_arch)/node.lib',
    npm ERR! gyp info spawn args   '-Dmodule_root_dir=/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass',
    npm ERR! gyp info spawn args   '-Dnode_engine=v8',
    npm ERR! gyp info spawn args   '--depth=.',
    npm ERR! gyp info spawn args   '--no-parallel',
    npm ERR! gyp info spawn args   '--generator-output',
    npm ERR! gyp info spawn args   'build',
    npm ERR! gyp info spawn args   '-Goutput_dir=.'
    npm ERR! gyp info spawn args ]
    npm ERR! Traceback (most recent call last):
    npm ERR!   File "/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/gyp/gyp_main.py", line 42, in <module>
    npm ERR!     import gyp  # noqa: E402
    npm ERR!     ^^^^^^^^^^
    npm ERR!   File "/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 9, in <module>
    npm ERR!     import gyp.input
    npm ERR!   File "/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/gyp/pylib/gyp/input.py", line 19, in <module>
    npm ERR!     from distutils.version import StrictVersion
    npm ERR! ModuleNotFoundError: No module named 'distutils'
    npm ERR! gyp ERR! configure error 
    npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
    npm ERR! gyp ERR! stack     at ChildProcess.onCpExit (/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/lib/configure.js:259:16)
    npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:517:28)
    npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:292:12)
    npm ERR! gyp ERR! System Darwin 23.0.0
    npm ERR! gyp ERR! command "/usr/local/bin/node" "/Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
    npm ERR! gyp ERR! cwd /Users/airtag/Desktop/AirtagsAnywhere/front_airtags/node_modules/node-sass
    npm ERR! gyp ERR! node -v v18.18.0
    npm ERR! gyp ERR! node-gyp -v v8.4.1
    npm ERR! gyp ERR! not ok 
    npm ERR! Build failed with error code: 1

    npm ERR! A complete log of this run can be found in: /Users/airtag/.npm/_logs/2023-10-07T19_25_34_725Z-debug-0.log
npm node-gyp
3个回答
2
投票

以下是消息的相关部分:

“from distutils.version import StrictVersion npm ERR!ModuleNotFoundError:没有名为“distutils”npm 的模块”

distutils 已从 Python 3.12 中删除。要么回滚到 Python 3.11.x,要么针对该包开具票证并修复构建过程。


0
投票

我解决了,我是 mac 用户:

从python3.12开始不再支持

disutils

安装python 3.11

brew install [email protected]

在.zshrc中设置环境变量

export PYTHON=3.11

现在您默认使用 [电子邮件受保护]


0
投票

distutils

模块用于为node gyp安装python包。该模块通常作为 python 安装的一部分安装。

在 python v3.12 中,删除了

distutils

 模块。这意味着您的本地没有任何工具来支持 Node gyp 的 python 包安装。

因此,当node gyp尝试使用未作为python的一部分安装的distutils安装python包时,会发生上述问题。

要解决此问题,我们建议您安装名为

setuptools

 的推荐工具以达到相同目的。

运行命令

python3 -m pip install setuptools


    

© www.soinside.com 2019 - 2024. All rights reserved.