Introduction
On Windows, activating a Python virtual environment can fail with "Activate.ps1 is not recognized" or "The term is not recognized as a cmdlet" errors. This typically happens due to PowerShell execution policy restrictions, antivirus interference, or corrupted venv creation.
This issue blocks developers from using isolated project environments on Windows, a critical step for reproducible Python development.
Symptoms
- PowerShell shows "Activate.ps1 cannot be loaded because running scripts is disabled on this system"
- Command prompt shows "The system cannot find the path specified" after running activate.bat
- The Scripts\Activate.ps1 or Scripts\activate.bat file is missing from the venv directory
Common Causes
- PowerShell execution policy is set to Restricted by default on Windows
- Antivirus software quarantines the activation script during venv creation
- venv creation was interrupted or used an incompatible Python executable path
Step-by-Step Fix
- 1.Change PowerShell execution policy for current user: Allow local scripts to run without admin privileges.
- 2.```powershell
- 3.# Run in PowerShell as regular user:
- 4.Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Then activate: .\venv\Scripts\Activate.ps1 ```
- 1.Recreate the virtual environment: Delete and recreate if activation scripts are missing.
- 2.```bash
- 3.rmdir /s /q venv
- 4.python -m venv venv
# Verify activation scripts exist: dir venv\Scripts\ # Should show: activate, activate.bat, Activate.ps1, deactivate.bat ```
- 1.Use the Python executable directly as workaround: Skip activation by calling the venv Python directly.
- 2.```bash
- 3.# Instead of activating, use the venv Python directly:
- 4..\venv\Scripts\python.exe -m pip install -r requirements.txt
- 5..\venv\Scripts\python.exe manage.py runserver
- 6.
` - 7.Create activation script manually if missing: Recreate the PowerShell activation script.
- 8.```powershell
- 9.# If Activate.ps1 is missing, recreate the venv:
- 10.python -m venv venv --clear
# Or copy from another working venv: Copy-Item C:\other_project\venv\Scripts\Activate.ps1 .\venv\Scripts\ ```
Prevention
- Set PowerShell execution policy to RemoteSigned when setting up a new Windows machine
- Exclude project directories from aggressive antivirus scanning
- Use pyenv-win or conda as alternative environment managers that handle activation differently
- Always verify venv creation succeeded by checking the Scripts directory exists