Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

npm Use 2 Versions of Python

Whenever I install certain node packages, there are errors involving the Python version. This is because I have both Python 2.7 and Python 3.3 (those were the latest versions last time I updated, but now there is 3.4), but obviously I can only source one version in my PATH (any later folders are overridden). I have Python 3.3 in my PATH because it's newer, but there are still so many programs, including npm modules, which use Python 2, over 5 years later.

Is there any way to include a "fallback" Python version, for modules which can not use version 3 yet? A general solution would be amazing, but I would at least like a solution for when installing npm modules. Keep in mind that some modules may be perfectly fine with Python 3, though I'm not sure if there are any which can not use Python 2. With that said, a solution which allows both, using the newest version when compatible and some older version when not, would be best.

For reference, my Python 2.7 is installed in the C:\Python27\python folder and Python 3.3 is in the C:\Python33\python folder. The npm error I am getting is:

[email protected] install c:\repos\konneka\node_modules\buster\node_modules\bus ter-syntax\node_modules\jsdom\node_modules\contextify node-gyp rebuild

|
c:\repos\konneka\node_modules\buster\node_modules\buster-syntax\node_modules\jsd
om\node_modules\contextify>node "c:\Program Files\nodejs\node_modules\npm\bin\no
de-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
[email protected] node_modules\buster\node_modules\buster-server-cli\node_modules\buste
r-cli\node_modules\buster-configuration\node_modules\when
[email protected] node_modules\buster\node_modules\buster-test-cli\node_modules\ramp\
node_modules\ramp-resources\node_modules\lodash
gyp ERR! configure error
gyp ERR! stack Error: Python executable "python" is v3.3.2, which is not support
ed by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & <
 3.0.0.
gyp ERR! stack     at failPythonVersion (c:\Program Files\nodejs\node_modules\np
m\node_modules\node-gyp\lib\configure.js:108:14)
gyp ERR! stack     at c:\Program Files\nodejs\node_modules\npm\node_modules\node
-gyp\lib\configure.js:97:9
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:645:7)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at maybeClose (child_process.js:755:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:822:
5)
ERR! System Windows_NT 6.2.9200
 command "node" "c:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\nod
e-gyp\\bin\\node-gyp.js" "rebuild"
[email protected] node_modules\browserify\node_modules\syntax-e
rror\node_modules\esprima-fb
[email protected] node_modules\karma\node_modules\http-proxy
├── [email protected]
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected].
0)
 cwd c:\repos\konneka\node_modules\buster\node_modules\buster-syntax\node_module
s\jsdom\node_modules\contextify
gyp ERR! node -v v0.10.29
gyp ERR! node-gyp -v v0.13.1
gyp ERR! not ok
like image 529
trysis Avatar asked Jul 14 '14 17:07

trysis


People also ask

How do I use two npm versions?

If you need to use a different version of npm for each project, there are a number of possible solutions. Probably the lightest-weight version is to use npx . A semi-common use-case for this can be projects that use lock-file v1 and another that uses lock-file v2. v2 was introduced in npm v7.

Can npm manage multiple code versions?

Due to https://github.com/npm/npm/issues/2943, npm will never support the ability to alias packages and install multiple versions of the same package.

Can I have multiple versions of Python installed?

If you wish to use multiple versions of Python on a single machine, then pyenv is a commonly used tool to install and switch between versions. This is not to be confused with the previously mentioned depreciated pyvenv script. It does not come bundled with Python and must be installed separately.


1 Answers

Use virtualenv and nodeenv and have any version combination you want.

like image 106
jhermann Avatar answered Oct 10 '22 07:10

jhermann