1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
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'
|