https://github.com/ekalinin/nodeenv/issues/333
https://github.com/ekalinin/nodeenv/pull/346

From 0d3ebaf7e13175e2871f59856f29d880a4cb3acf Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Wed, 13 Dec 2023 04:13:24 +0000
Subject: [PATCH] Remove usage of non-portable `which`

* Use Python's shutil.which() instead of shelling out to `which` to find Python 2
* Use `command -v` instead of `which` in README

Fixes: https://github.com/ekalinin/nodeenv/issues/333
---
 README.rst    | 2 +-
 README.ru.rst | 2 +-
 nodeenv.py    | 8 ++------
 3 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/README.rst b/README.rst
index c9e130b..3459572 100644
--- a/README.rst
+++ b/README.rst
@@ -211,7 +211,7 @@ environment::
 
     $ workon my_env
     $ npm install -g coffee-script
-    $ which coffee
+    $ command -v coffee
     /home/monty/virtualenvs/my_env/bin/coffee
     
 Creating a virtual environment with a custom prompt:
diff --git a/README.ru.rst b/README.ru.rst
index c3eb130..2cc821e 100644
--- a/README.ru.rst
+++ b/README.ru.rst
@@ -155,7 +155,7 @@ python'а::
 
     $ workon my_env
     $ npm install -g coffee-script
-    $ which coffee
+    $ command -v coffee
     /home/monty/virtualenvs/my_env/bin/coffee
 
 
diff --git a/nodeenv.py b/nodeenv.py
index 9d5dd06..183ded2 100644
--- a/nodeenv.py
+++ b/nodeenv.py
@@ -707,12 +707,8 @@ def build_node_from_src(env_dir, src_dir, node_src_dir, args):
         # Currently, the node.js build scripts are using python2.*,
         # therefore we need to temporarily point python exec to the
         # python 2.* version in this case.
-        try:
-            _, which_python2_output = callit(
-                ['which', 'python2'], args.verbose, True, node_src_dir, env
-            )
-            python2_path = which_python2_output[0]
-        except (OSError, IndexError):
+        python2_path = shutil.which('python2')
+        if not python2_path:
             raise OSError(
                 'Python >=3.0 virtualenv detected, but no python2 '
                 'command (required for building node.js) was found'

