How to Create and Use a Virtual Environment in Python

A virtual environment lets you create an isolated Python setup for one project.

This is useful when you want to:

  • install packages without affecting other projects
  • keep project dependencies separate
  • avoid version conflicts between libraries

On this page, you will learn how to create a virtual environment, activate it, install packages inside it, and leave it when you are done.

Quick answer #

Use this when you want the fastest working setup:

python -m venv .venv

# Windows
.venv\Scripts\activate

# macOS/Linux
source .venv/bin/activate

pip install requests

deactivate

What these commands do:

  • python -m venv .venv creates a new virtual environment in a folder named .venv
  • activate turns that environment on in your terminal
  • pip install requests installs the requests package inside that environment
  • deactivate turns the environment off

What a virtual environment is #

A virtual environment is a separate folder that contains:

  • its own Python setup
  • its own pip
  • its own installed packages

This helps keep one project separate from another.

For example:

  • Project A can use one version of a package
  • Project B can use a different version
  • neither project breaks the other

This is one of the safest habits to learn early in Python.

When you should use one #

Use a virtual environment for almost every Python project.

It is especially helpful when:

  • you plan to install third-party packages with pip
  • you are following a tutorial that needs extra libraries
  • you want to keep your system Python clean
  • different projects need different package versions

For a tiny one-file practice script, it may not always be necessary. But it is still a good habit.

If you are new to installing packages, see how to install a Python package with pip.

Before you start #

Before creating the environment, make sure:

  • Python is installed
  • python works in your terminal or command prompt
  • you opened the terminal in your project folder
  • you picked a clear environment name such as .venv or venv

You can test Python with:

python --version

Example output:

Python 3.12.2

If this does not work, you may need to install Python on Windows, macOS, and Linux.

Create the virtual environment #

Run this command in your project folder:

python -m venv .venv

What it does:

  • runs Python
  • uses the built-in venv module
  • creates a new folder named .venv

That folder stores the environment files and installed packages.

A simple project might look like this after creation:

my_project/
├── .venv/
└── app.py

Do not edit files inside .venv manually. Python and pip manage that folder for you.

Activate the virtual environment #

After creating the environment, activate it.

Windows Command Prompt #

.venv\Scripts\activate

Windows PowerShell #

.venv\Scripts\Activate.ps1

macOS and Linux #

source .venv/bin/activate

After activation:

  • package installs go into this environment
  • python and pip usually point to the environment versions
  • your terminal often shows the environment name at the start

For example, your prompt may change from:

C:\projects\my_project>

to:

(.venv) C:\projects\my_project>

Check that it is active #

You can confirm that the environment is active in a few ways.

Look at the terminal prompt #

Many terminals show the environment name, such as:

(.venv)

Check the Python version #

python --version

Check which pip is being used #

pip --version

You can also use:

python -m pip --version

This is often more reliable because it uses the current Python interpreter directly.

Check the Python path #

On Windows:

where python
where pip

On macOS/Linux:

which python
which pip

If the environment is active, these commands should point to files inside the .venv folder.

Install packages inside the environment #

Once the environment is active, you can install packages with pip.

Example:

pip install requests

This installs requests only inside the current project environment.

You can check installed packages with:

pip list

You can also test the package in Python code.

Create a file named app.py:

import requests

print("requests installed successfully")
print(requests.__version__)

Run it with:

python app.py

Example output:

requests installed successfully
2.32.3

If you are not sure how imports work, see how imports work in Python or how to import a module in Python.

Use the environment in your editor or IDE #

Many editors detect a .venv folder automatically.

If yours does not, choose the Python interpreter from the .venv folder manually.

This matters because:

  • Run and Debug should use the same interpreter as your terminal
  • installed packages must be available in both places
  • using the wrong interpreter can cause import errors

A common beginner problem is:

  • the package works in the terminal
  • but the editor says the module cannot be found

That usually means the editor is using a different Python interpreter.

If needed, this can also help when learning how to run Python code from the command line and IDEs.

Deactivate the environment #

When you are done, run:

deactivate

This returns your terminal to the global Python environment.

Important:

  • deactivate does not delete the environment
  • it only turns it off for the current terminal session
  • you can activate it again later

Delete and recreate an environment #

If you want to remove the environment, delete the .venv folder.

Then recreate it with:

python -m venv .venv

This is useful when:

  • the environment becomes broken
  • package versions get messy
  • you want a clean setup

After recreating it, install your packages again.

Save and restore dependencies #

If you want to reuse the same packages later, save them to a file.

Save installed packages #

pip freeze > requirements.txt

This creates a requirements.txt file.

Restore packages later #

pip install -r requirements.txt

This is useful when:

  • moving the project to another computer
  • sharing the project with someone else
  • recreating the environment from scratch

A common workflow looks like this:

python -m venv .venv

# activate the environment first

pip install requests
pip freeze > requirements.txt

Later, after deleting or recreating the environment:

python -m venv .venv

# activate the environment first

pip install -r requirements.txt

Common problems and quick fixes #

python command not found #

This usually means Python is not installed correctly, or it is not on your system PATH.

Try:

python --version

If that fails, review how to install Python on Windows, macOS, and Linux.

Activation script is blocked in PowerShell #

On Windows PowerShell, you may get an execution policy error when running:

.venv\Scripts\Activate.ps1

Quick fixes:

  • use Command Prompt instead
  • or adjust the PowerShell execution policy if allowed on your system

Package installs to the wrong place #

This often happens when you run pip install before activating the environment.

Check:

pip --version
python -m pip --version

If the path does not point into .venv, activate the environment first.

ModuleNotFoundError after installing a package #

This usually means one of these things happened:

  • the package was installed in a different environment
  • the editor is using a different interpreter
  • the environment was not active during install

Related help:

Common mistakes #

These are the most common beginner mistakes with virtual environments:

  • trying to install packages before activating the environment
  • using the wrong activation command for the operating system or shell
  • running pip from the global Python instead of the environment
  • opening the editor with a different interpreter than the terminal
  • assuming deactivate deletes the environment

Useful commands for checking problems:

python --version
python -m venv .venv
pip --version
python -m pip --version
pip list

On Windows:

where python
where pip

On macOS/Linux:

which python
which pip

FAQ #

Do I need a virtual environment for every project? #

For most projects, yes. It keeps packages separate and avoids version conflicts.

What is the difference between venv and pip? #

venv creates the isolated environment. pip installs packages into that environment.

Should I name the folder venv or .venv? #

Both work. .venv is common because many editors recognize it and it stays less visible.

Does deactivate remove installed packages? #

No. It only stops using the environment in the current terminal session.

Can I share a virtual environment folder with other people? #

Usually no. Share a requirements.txt file instead, and let each person create their own environment.

See also #

Press Esc to close