A pyenv plugin that creates, lists, activates and deletes Python virtualenvs and conda environments on UNIX-like systems.
ekalinin/nodeenv
A Python tool that creates isolated Node.js virtual environments, each with its own Node.js and npm install, optionally integrated with a Python virtualenv.
Open-source alternative to:nvm
- Stars
- 1,796
- Forks
- 230
- Open issues
- 26
- Last commit
- 4 days ago
What is it?
nodeenv creates isolated Node.js environments. Each environment has its own installation directory and does not share global npm packages with other nodeenv environments, similar in spirit to Python's virtualenv.
It can download prebuilt Node.js binaries or compile from source, and supports choosing versions by exact number, semver range, or the keywords latest, lts and system. Installs can be driven by requirements files, and an existing Python virtual environment can be extended with a Node.js environment using the -p option, so Python and JavaScript tooling live side by side.
The tool also covers mirror configuration for restricted networks, a ~/.nodeenvrc config file for defaults, and a freeze command that records installed packages for repeatable setups.
Key features
- 01Creates isolated Node.js environments with their own installation directories.
- 02Installs prebuilt Node.js binaries by default, or compiles from source on Unix.
- 03Accepts exact versions, semver ranges, and keywords like lts and latest.
- 04Integrates with an existing Python virtualenv via the -p option.
- 05Installs npm packages from requirements files, globally or into node_modules.
- 06Supports custom download mirrors, including local directories and authenticated URLs.
Use cases
- Running a Python project that also needs a specific Node.js version for build tooling.
- Setting up reproducible Node.js and npm package versions across machines.
- Installing Node.js on hosts where a mirror or local package copy is required.
- Keeping several Node.js versions side by side for testing compatibility.
Quick start
- 1
Install nodeenv globally with pipx
pipx install nodeenv - 2
Create a Node.js environment named env
nodeenv env - 3
Activate the new environment
. env/bin/activate
Things to know
- The license is listed as NOASSERTION, so check the repository for license terms before use.
- Building Node.js from source needs libssl-dev and, for versions older than 13, a python2 command.
Topics
FAQ
- What is nodeenv?
- A Python tool that creates isolated Node.js virtual environments, each with its own Node.js and npm install, optionally integrated with a Python virtualenv. nodeenv creates isolated Node.js environments. Each environment has its own installation directory and does not share global npm packages with other nodeenv environments, similar in spirit to Python's virtualenv.
- Is nodeenv free to use? What license does it have?
- nodeenv is open source under the Other license. Check the license terms before using it in commercial products.
- Is nodeenv still maintained?
- Actively maintained. The last commit to nodeenv was on Nov 2, 2026.
- What can I use nodeenv for?
- Running a Python project that also needs a specific Node.js version for build tooling. Setting up reproducible Node.js and npm package versions across machines. Installing Node.js on hosts where a mirror or local package copy is required. Keeping several Node.js versions side by side for testing compatibility.
- How do I install nodeenv?
- Install nodeenv globally with pipx: pipx install nodeenv Create a Node.js environment named env: nodeenv env Activate the new environment: . env/bin/activate
- Where can I get nodeenv?
- The source code and installation instructions are on GitHub: https://github.com/ekalinin/nodeenv
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A minimal bash-based CLI for installing, switching, and removing multiple Node.js versions on macOS and Linux.
A Python launcher that installs packages into a temporary environment for a single run, then discards them.
Fast, disk-efficient Node.js package manager that links packages from a shared content-addressable store, with strict dependency isolation and monorepo support.
A CLI that wraps npm publish with pre-release checks, version bumping, git tagging, tests and pushes, so releases are done in one interactive run.
A cross-platform version manager for development runtimes like Node.js, Java, Go and Python, extendable through plugins.