#Что означает ошибка
Activate.ps1 cannot be loaded because running scripts is disabled on this system
Ошибка PowerShell «Выполнение сценариев отключено в этой системе» при .\venv\Scripts\Activate.ps1 вызвана политикой выполнения (Execution Policy). Она ограничивает запуск .ps1-скриптов и не связана с самим Python.
Исправляется изменением политики для текущего пользователя или использованием другой оболочки.
Права администратора для этого не нужны.
PowerShell по умолчанию запрещает запуск скриптов, поэтому Activate.ps1 не выполняется. Можно разрешить скрипты для текущего пользователя либо использовать activate.bat в командной строке.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Политика выполнения Restricted | PowerShell не разрешает запуск локального Activate.ps1 | Проверьте Get-ExecutionPolicy -List и допустимость Scope Process. |
| Запуск не в той оболочке | Установлена групповая политика организации | Не обходите её, используйте cmd/прямой запуск Python либо обратитесь к администратору. |
| Групповая политика запрещает | Создано другое окружение или скрипта нет | Проверьте путь venv и создайте окружение при необходимости. |
| Неверный путь к скрипту | Активация прошла, но Python берётся из другого каталога | Проверьте sys.executable и фактические пути команд. |
#Пошаговое решение
- Откройте PowerShellВ Windows откройте «Пуск» → PowerShell или «Терминал» (обычное окно, права администратора не нужны) и перейдите в папку проекта командой
cd "C:\путь\к\проекту", заменив путь реальным. ВыполнитеGet-ExecutionPolicy -Listи прочитайте значения дляProcess,CurrentUser,LocalMachine,UserPolicy,MachinePolicy. Если ошибка появляется именно при запускеvenv\Scripts\Activate.ps1, проверьте, что файл существует и виртуальное окружение уже создано.Windows · PowerShellКомандаКоманды PowerShell; установка Process действует только в текущем сеансе и не должна обходить групповые политики.Get-ExecutionPolicy -List# Только если разрешено правилами организации:Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned.\venv\Scripts\Activate.ps1 - Разрешите выполнение скриптовЕсли политика организации это разрешает, установите только для своего пользователя
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedи подтвердите запрос. Это изменяет пользовательскую политику PowerShell; для разового сеанса менее постоянная альтернативаSet-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned. Эти способы альтернативные, а ограниченияMachinePolicy/UserPolicyнельзя переопределять локально — обратитесь к администратору. Для отката пользовательского изменения используйтеSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Undefined, если ранее состояние CurrentUser было Undefined. - Активируйте окружениеВ том же окне PowerShell, находясь в корне проекта, выполните
.\venv\Scripts\Activate.ps1(имя каталога может быть.venv, проверьте Проводником). Обычный признак успеха — префикс(venv)в приглашении; проверьте точный интерпретатор командойpython -c "import sys; print(sys.executable)": путь должен вести в вашу папкуvenv. Если файл отсутствует, создайте окружение черезpy -m venv venvпосле проверки, что нужный Python установлен; не копируйте активацию из чужой папки. - Либо используйте cmd или Git BashЕсли менять политику нельзя, в меню «Пуск» откройте Командную строку (cmd), перейдите в каталог проекта и выполните
venv\Scripts\activate.bat. Можно вообще не активировать окружение: вызовитеvenv\Scripts\python.exe -m pip install ИМЯ_ПАКЕТАилиvenv\Scripts\python.exe script.py, подставив нужные значения. Это не требует изменения ExecutionPolicy. Git Bash использует другой сценарий активации (source venv/Scripts/activate) и не обязательно установлен — не смешивайте команды разных оболочек. - Проверьте интерпретаторВ PowerShell выполните
Get-Command python | Select-Object Sourceиpython -c "import sys; print(sys.prefix); print(sys.base_prefix)"; после активации prefix обычно указывает на окружение, а base_prefix — на базовый Python. В cmd вместоGet-Commandиспользуйтеwhere python. Если путь не тот, сначала проверьте, что активировали окружение именно этого проекта. При завершении работы отключите его командойdeactivate, если активация происходила.
#Изменение политики
Сначала выполните Get-ExecutionPolicy -List. Если доменная политика не запрещает выполнение, администратор организации разрешает необходимый вариант; для одного сеанса можно использовать Set-ExecutionPolicy -Scope Process RemoteSigned, а для пользователя — CurrentUser по согласованию. Bypass и обход политик не являются штатным решением, поскольку защита выполняет организационные правила. Возможная альтернатива — запуск Python из виртуального окружения напрямую без активации.
#Другие способы
В cmd.exe используйте venv\Scripts\activate.bat — политика PowerShell не применяется. В Git Bash: source venv/Scripts/activate. В VS Code выберите интерпретатор из venv (Ctrl+Shift+P → «Python: Select Interpreter») и откройте терминал: расширение само активирует окружение. Можно вообще не активировать окружение: venv\Scripts\python.exe -m pip install -r requirements.txt.
#Проверка окружения
После активации проверяйте не только префикс (venv), но и python -c "import sys; print(sys.executable)". where python работает в cmd, а PowerShell использует Get-Command python. Не запускайте python -m venv venv --clear на существующем окружении без согласования: ключ --clear удаляет его содержимое. При повреждении окружения сначала сохраните перечень зависимостей и создайте новое отдельно.
.\venv\Scripts\Activate.ps1python -c "import sys; print(sys.executable)"