Activating and Deactivating Virtual Environments
🏷️ Setting Up Your Python Environment / Virtual Environments
When you create a virtual environment, it starts in an inactive state. Before you can use the isolated Python interpreter and installed packages inside it, you need to activate it. Activation tells your terminal or command prompt to use the environment's Python and tools instead of the system-wide ones. When you're done working, you deactivate it to return to your normal system environment.
⚙️ What Happens When You Activate?
Activating a virtual environment modifies your shell's environment variables temporarily. Here's what changes:
- Your command prompt changes — You'll see the environment's name in parentheses at the beginning of your terminal prompt (e.g.,
(myenv) $). This is a visual cue that you're inside the environment. - Python and pip are redirected — Running
pythonorpipnow points to the versions inside your virtual environment, not the system-wide ones. - Package isolation is enforced — Any packages you install using
pipwill go into the environment's ownsite-packagesfolder, keeping them separate from other projects.
🛠️ How to Activate a Virtual Environment
The activation command differs depending on your operating system and shell. Here are the common approaches:
- On Windows (Command Prompt): Navigate to your project folder, then run
myenv\Scripts\activate.bat - On Windows (PowerShell): Navigate to your project folder, then run
myenv\Scripts\Activate.ps1 - On macOS and Linux (bash/zsh): Navigate to your project folder, then run
source myenv/bin/activate - On macOS and Linux (fish shell): Navigate to your project folder, then run
source myenv/bin/activate.fish
After activation, you'll see the environment name appear in your terminal prompt. For example, if your environment is named myenv, your prompt will change to (myenv) $ or (myenv) >.
📊 Activation Comparison by Operating System
| Operating System | Shell / Terminal | Activation Command |
|---|---|---|
| Windows | Command Prompt | myenv\Scripts\activate.bat |
| Windows | PowerShell | myenv\Scripts\Activate.ps1 |
| macOS / Linux | bash, zsh | source myenv/bin/activate |
| macOS / Linux | fish | source myenv/bin/activate.fish |
🕵️ Verifying That You're Inside an Active Environment
Once activated, you can confirm you're inside the virtual environment by checking a few things:
- Look at your terminal prompt — The environment name in parentheses is the quickest indicator.
- Check the Python location — Run
which python(macOS/Linux) orwhere python(Windows). It should point to a path inside your environment folder, such as/home/user/myenv/bin/python. - Check the Python version — Run
python --version. This will show the Python version installed inside your environment. - List installed packages — Run
pip list. You should see only the base packages that came with the environment, not your system-wide packages.
🔄 How to Deactivate a Virtual Environment
When you're finished working in your environment, returning to your normal system environment is simple:
- On all operating systems and shells: Simply run
deactivate
After deactivation, your terminal prompt will return to normal (the environment name will disappear), and running python or pip will again use your system-wide installations.
📋 Common Pitfalls and Tips
- You must activate the environment in every new terminal session — Activation is not persistent across terminal windows. If you open a new terminal, you need to activate the environment again.
- Deactivate before deleting an environment — If you try to delete an environment folder while it's still active, you may encounter errors. Always run
deactivatefirst. - Nested environments are not recommended — Avoid activating one environment while inside another. Always deactivate the current one before activating a different one.
- Your prompt may not show the environment name — Some shell configurations suppress the prompt change. In that case, use the
which pythonorwhere pythoncommand to verify. - Activation scripts may need execution permissions on macOS/Linux — If you get a "permission denied" error, run
chmod +x myenv/bin/activateto make the script executable.
🎯 Quick Reference Workflow
Here's the typical workflow for using a virtual environment:
- Create the environment using
python -m venv myenv - Activate it using the appropriate command for your OS
- Work inside the environment — install packages, run scripts, develop your project
- Deactivate when done using
deactivate - Reactivate when you return to work on the project in a new terminal session
This cycle of activating and deactivating gives you complete control over your Python environments, keeping each project's dependencies clean and isolated from one another.
Activating a virtual environment tells your terminal to use the isolated Python and packages inside that environment, while deactivating returns you to your system's default Python.
🟢 Example 1: Activating a virtual environment on macOS/Linux
This shows the command to enter an existing virtual environment folder and activate it.
# Navigate to your project folder
cd my_project
# Activate the virtual environment (macOS/Linux)
source venv/bin/activate
📤 Output: (venv) yourname@computer:~/my_project$
🟢 Example 2: Activating a virtual environment on Windows (Command Prompt)
This shows the activation command for Windows users using Command Prompt.
# Navigate to your project folder
cd my_project
# Activate the virtual environment (Windows CMD)
venv\Scripts\activate
📤 Output: (venv) C:\Users\yourname\my_project>
🟢 Example 3: Deactivating a virtual environment
This shows how to leave the virtual environment and return to your system Python.
# While inside an active virtual environment
deactivate
📤 Output: Your terminal prompt returns to normal (no (venv) prefix)
🟢 Example 4: Verifying activation by checking Python location
This shows how to confirm which Python interpreter is currently active.
# First, activate the environment
source venv/bin/activate
# Check where Python is located
which python
📤 Output: /home/yourname/my_project/venv/bin/python
🟢 Example 5: Activate, run a script, then deactivate
This shows a complete workflow: activate, run code, and cleanly exit the environment.
# Step 1: Activate the environment
source venv/bin/activate
# Step 2: Run a Python script
python my_script.py
# Step 3: Deactivate when done
deactivate
📤 Output: Script output appears, then terminal returns to normal prompt
Comparison Table: Activation Commands by Operating System
| Operating System | Activation Command | Deactivation Command |
|---|---|---|
| macOS / Linux | source venv/bin/activate |
deactivate |
| Windows (CMD) | venv\Scripts\activate |
deactivate |
| Windows (PowerShell) | venv\Scripts\Activate.ps1 |
deactivate |
When you create a virtual environment, it starts in an inactive state. Before you can use the isolated Python interpreter and installed packages inside it, you need to activate it. Activation tells your terminal or command prompt to use the environment's Python and tools instead of the system-wide ones. When you're done working, you deactivate it to return to your normal system environment.
⚙️ What Happens When You Activate?
Activating a virtual environment modifies your shell's environment variables temporarily. Here's what changes:
- Your command prompt changes — You'll see the environment's name in parentheses at the beginning of your terminal prompt (e.g.,
(myenv) $). This is a visual cue that you're inside the environment. - Python and pip are redirected — Running
pythonorpipnow points to the versions inside your virtual environment, not the system-wide ones. - Package isolation is enforced — Any packages you install using
pipwill go into the environment's ownsite-packagesfolder, keeping them separate from other projects.
🛠️ How to Activate a Virtual Environment
The activation command differs depending on your operating system and shell. Here are the common approaches:
- On Windows (Command Prompt): Navigate to your project folder, then run
myenv\Scripts\activate.bat - On Windows (PowerShell): Navigate to your project folder, then run
myenv\Scripts\Activate.ps1 - On macOS and Linux (bash/zsh): Navigate to your project folder, then run
source myenv/bin/activate - On macOS and Linux (fish shell): Navigate to your project folder, then run
source myenv/bin/activate.fish
After activation, you'll see the environment name appear in your terminal prompt. For example, if your environment is named myenv, your prompt will change to (myenv) $ or (myenv) >.
📊 Activation Comparison by Operating System
| Operating System | Shell / Terminal | Activation Command |
|---|---|---|
| Windows | Command Prompt | myenv\Scripts\activate.bat |
| Windows | PowerShell | myenv\Scripts\Activate.ps1 |
| macOS / Linux | bash, zsh | source myenv/bin/activate |
| macOS / Linux | fish | source myenv/bin/activate.fish |
🕵️ Verifying That You're Inside an Active Environment
Once activated, you can confirm you're inside the virtual environment by checking a few things:
- Look at your terminal prompt — The environment name in parentheses is the quickest indicator.
- Check the Python location — Run
which python(macOS/Linux) orwhere python(Windows). It should point to a path inside your environment folder, such as/home/user/myenv/bin/python. - Check the Python version — Run
python --version. This will show the Python version installed inside your environment. - List installed packages — Run
pip list. You should see only the base packages that came with the environment, not your system-wide packages.
🔄 How to Deactivate a Virtual Environment
When you're finished working in your environment, returning to your normal system environment is simple:
- On all operating systems and shells: Simply run
deactivate
After deactivation, your terminal prompt will return to normal (the environment name will disappear), and running python or pip will again use your system-wide installations.
📋 Common Pitfalls and Tips
- You must activate the environment in every new terminal session — Activation is not persistent across terminal windows. If you open a new terminal, you need to activate the environment again.
- Deactivate before deleting an environment — If you try to delete an environment folder while it's still active, you may encounter errors. Always run
deactivatefirst. - Nested environments are not recommended — Avoid activating one environment while inside another. Always deactivate the current one before activating a different one.
- Your prompt may not show the environment name — Some shell configurations suppress the prompt change. In that case, use the
which pythonorwhere pythoncommand to verify. - Activation scripts may need execution permissions on macOS/Linux — If you get a "permission denied" error, run
chmod +x myenv/bin/activateto make the script executable.
🎯 Quick Reference Workflow
Here's the typical workflow for using a virtual environment:
- Create the environment using
python -m venv myenv - Activate it using the appropriate command for your OS
- Work inside the environment — install packages, run scripts, develop your project
- Deactivate when done using
deactivate - Reactivate when you return to work on the project in a new terminal session
This cycle of activating and deactivating gives you complete control over your Python environments, keeping each project's dependencies clean and isolated from one another.
Interactive Views
You are currently in 📚 All-in-One mode. Use the tabs at the top to switch to 📖 Theory Only or 💻 Code Only views.
Activating a virtual environment tells your terminal to use the isolated Python and packages inside that environment, while deactivating returns you to your system's default Python.
🟢 Example 1: Activating a virtual environment on macOS/Linux
This shows the command to enter an existing virtual environment folder and activate it.
# Navigate to your project folder
cd my_project
# Activate the virtual environment (macOS/Linux)
source venv/bin/activate
📤 Output: (venv) yourname@computer:~/my_project$
🟢 Example 2: Activating a virtual environment on Windows (Command Prompt)
This shows the activation command for Windows users using Command Prompt.
# Navigate to your project folder
cd my_project
# Activate the virtual environment (Windows CMD)
venv\Scripts\activate
📤 Output: (venv) C:\Users\yourname\my_project>
🟢 Example 3: Deactivating a virtual environment
This shows how to leave the virtual environment and return to your system Python.
# While inside an active virtual environment
deactivate
📤 Output: Your terminal prompt returns to normal (no (venv) prefix)
🟢 Example 4: Verifying activation by checking Python location
This shows how to confirm which Python interpreter is currently active.
# First, activate the environment
source venv/bin/activate
# Check where Python is located
which python
📤 Output: /home/yourname/my_project/venv/bin/python
🟢 Example 5: Activate, run a script, then deactivate
This shows a complete workflow: activate, run code, and cleanly exit the environment.
# Step 1: Activate the environment
source venv/bin/activate
# Step 2: Run a Python script
python my_script.py
# Step 3: Deactivate when done
deactivate
📤 Output: Script output appears, then terminal returns to normal prompt
Comparison Table: Activation Commands by Operating System
| Operating System | Activation Command | Deactivation Command |
|---|---|---|
| macOS / Linux | source venv/bin/activate |
deactivate |
| Windows (CMD) | venv\Scripts\activate |
deactivate |
| Windows (PowerShell) | venv\Scripts\Activate.ps1 |
deactivate |