Skip to content
This repository has been archived by the owner on Jul 24, 2024. It is now read-only.

npm install fails on latest version with Python 3.12 #3420

Open
NoaBentu opened this issue Jun 23, 2024 · 1 comment
Open

npm install fails on latest version with Python 3.12 #3420

NoaBentu opened this issue Jun 23, 2024 · 1 comment

Comments

@NoaBentu
Copy link

  • NPM version (npm -v): 9.6.7
  • Node version (node -v): v18.17.1
  • Node Process (node -p process.versions):
{
  node: '18.17.1',
  acorn: '8.8.2',
  ada: '2.5.0',
  ares: '1.19.1',
  brotli: '1.0.9',
  cldr: '43.0',
  icu: '73.1',
  llhttp: '6.0.11',
  modules: '108',
  napi: '9',
  nghttp2: '1.52.0',
  nghttp3: '0.7.0',
  ngtcp2: '0.8.1',
  openssl: '3.0.10+quic',
  simdutf: '3.2.12',
  tz: '2023c',
  undici: '5.22.1',
  unicode: '15.0',
  uv: '1.44.2',
  uvwasi: '0.0.18',
  v8: '10.2.154.26-node.26',
  zlib: '1.2.13.1-motley'
}
  • Node Platform (node -p process.platform): darwin
  • Node architecture (node -p process.arch): arm64
  • node-sass version (node -p "require('node-sass').info"): N/A, npm install fails
  • npm node-sass versions (npm ls node-sass):
/private/tmp/test
└── (empty)

Hi,

Installing the latest version of node-sass from NPM using these commands:

mkdir /tmp/test
cd /tmp/test
npm install node-sass@latest

fails with the following error:

npm ERR! Building: /Users/noa/.nvm/versions/node/v18.17.1/bin/node /private/tmp/test/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   '/Users/noa/.nvm/versions/node/v18.17.1/bin/node',
npm ERR! gyp verb cli   '/private/tmp/test/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 "/opt/homebrew/opt/[email protected]/bin/python3.12"
npm ERR! gyp verb find Python - executing "/opt/homebrew/opt/[email protected]/bin/python3.12" to get version
npm ERR! gyp verb find Python - version is "3.12.3"
npm ERR! gyp info find Python using Python version 3.12.3 found at "/opt/homebrew/opt/[email protected]/bin/python3.12"
npm ERR! gyp verb get node dir no --target version specified, falling back to host node version: 18.17.1
npm ERR! gyp verb command install [ '18.17.1' ]
npm ERR! gyp verb install input version string "18.17.1"
npm ERR! gyp verb install installing version: 18.17.1
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.17.1
npm ERR! gyp verb build dir attempting to create "build" dir: /private/tmp/test/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: /private/tmp/test/node_modules/node-sass/build/config.gypi
npm ERR! gyp verb config.gypi checking for gypi file: /private/tmp/test/node_modules/node-sass/config.gypi
npm ERR! gyp verb common.gypi checking for gypi file: /private/tmp/test/node_modules/node-sass/common.gypi
npm ERR! gyp verb gyp gyp format was not specified; forcing "make"
npm ERR! gyp info spawn /opt/homebrew/opt/[email protected]/bin/python3.12
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/private/tmp/test/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   '/private/tmp/test/node_modules/node-sass/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/private/tmp/test/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/noa/Library/Caches/node-gyp/18.17.1/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/noa/Library/Caches/node-gyp/18.17.1',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/private/tmp/test/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/noa/Library/Caches/node-gyp/18.17.1/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/private/tmp/test/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 "/private/tmp/test/node_modules/node-gyp/gyp/gyp_main.py", line 42, in <module>
npm ERR!     import gyp  # noqa: E402
npm ERR!     ^^^^^^^^^^
npm ERR!   File "/private/tmp/test/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 9, in <module>
npm ERR!     import gyp.input
npm ERR!   File "/private/tmp/test/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 (/private/tmp/test/node_modules/node-gyp/lib/configure.js:259:16)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:514:28)
npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Darwin 23.4.0
npm ERR! gyp ERR! command "/Users/noa/.nvm/versions/node/v18.17.1/bin/node" "/private/tmp/test/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd /private/tmp/test/node_modules/node-sass
npm ERR! gyp ERR! node -v v18.17.1
npm ERR! gyp ERR! node-gyp -v v8.4.1
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1

This is caused by Python 3.12 removing distutils. Note that this was fixed in node-gyp in 10.0.0 (nodejs/node-gyp@707927c), but node-sass version 9.0.0 still depends on ^8.4.1.

Currently, the master branch contains the fixed version of node-gyp, but it's not published on NPM. Would it be possible to publish it please?

Have a great day,
Noa

@nex3
Copy link
Contributor

nex3 commented Jul 18, 2024

Node Sass is deprecated, and this issue is unlikely to ever be fixed. Please move your Sass compilation to the sass package instead.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants