Skip to main content

Install node.js into your virtualenv

Project description


Continuous integration status:

This package is a wrapper around the node.js sources and provides a convenient way to install it directly into your virtualenv instead of globally. I created this package to play around with a simple installation for Django projects that use django-compressor’s precompiler to generate CSS from less files.

The install routine used in is adapted from the nodeenv package provided by Eugene Kalinin. The difference is that I want to install node.js into an existing virtualenv instead of creating a specific environment for node.

I am using this in combination with virtual-less which installs the lessc commandline tool into a virtual environment.


Installing the node into your virtual environment is as easy as:

$ pip install virtual-node

If you had node.js installed globally previous to installing virtual-node, running npm or node will still point to your global installation. To make sure you’re using the newly installed node, deactivate your virtualenv and re-activate it.

You can check that virtual-node has node pointing to the right place by running which node in your virtual environment:

$ which node

Your output should look something like:


Install specific version of node

Version 0.1.0 add support for the environmental variable NODE_VERSION that make it possible to specify the node version to be installed. If you want to install version 0.10.0, simply set NODE_VERSION=0.10.0 and run pip install afterwards:

$ export NODE_VERSION=0.10.0
$ pip install virtual-node

or even just:

$ NODE_VERSION=0.10.0 pip install virtual-node

In addition,it is possible to specify the version of node using the NPM packaging format package.json (support added in version 0.0.3). To use this feature you need to specify the current project directory in the environment variable PROJECT_DIR before you install virtual-node. You can simply export it on the commandline:

$ export PROJECT_DIR=/path/to/my/project

or define it in your virtualenv/virtualenvwrapper scripts.

During installation, the setup script will attempt to retrieve the desired version of node from a file named package.json which is also used by NPM [and is explained in detail on their website](

A sample file to specify version 0.10.0 would look like this:

  "name": "my-project",
  "version": "0.0.1",
  "engines": {
    "node": "==0.10.0"

The version of the engine to be used is the version that virtual-node will use to install node. Note: you have to specify an exact version (using ==) otherwise the version will be ignored.

Issues & Contributions

Please let me know if you have any issues, please raise an issue here on the github project.

If you want to contribute, fork this repository and open a pull request with your changes. I’d be happy to include them.


This package is released under the permissive New BSD license.

Bitdeli badge



  • Add the ability to specify the version of node as an environmental variable using NODE_VERSION. This makes it a lot easier to define the version of node that will be installed.

  • Update the default version of node to 0.10.26, the most recent version at the time of writing.


  • Adds strict version checking to prevent some version comparison issues.

  • Corrects issue with os.path.join when PROJECT_DIR is not specified.


  • Drop calls of commands curl and tar in favour of python modules to make sure that this still works on machines without those commands installed.

  • Add support for package.json file to specify a custom version of node. This allows to re-align the versioning of virtual-node with python conventions.


  • Adds check for existing version of virtual-node

  • Fix issues when used as dependency in

  • Switch from using install to build command


  • Initial release

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

virtual-node-0.1.0.tar.gz (7.2 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page