Python venv が activate できない(Windows PowerShell)
PowerShell の実行ポリシーがスクリプト実行を禁じていると Activate.ps1 が走らない。
RemoteSigned に変更するか、cmd 用の activate.bat を使う。
#venv#activate#powershell#windows
公開:
要約
Windows で Activate.ps1 を実行できないのは、PowerShell の ExecutionPolicy が Restricted で
ローカルスクリプトの起動を禁じているため。RemoteSigned に変更すれば動く。
スクリプトの拡張子をシェルに合わせる ことも忘れない。
よくある原因
- ExecutionPolicy が Restricted: 既定では PowerShell スクリプトが一切走らない
- シェルとスクリプトの不一致: cmd で
Activate.ps1を、PowerShell でactivate.batを呼んでいる - 作成時 Python と参照 Python の食い違い:
py -3.11 -m venvで作ってpythonで activate しようとしている - 環境破壊:
.venvを別 OS に持ち込んだ/ディレクトリ名を変更した
解決策
1. ExecutionPolicy を RemoteSigned に
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedCurrentUser スコープなら管理者権限不要。
署名されていないリモート由来のスクリプトは引き続き拒否される。
2. シェルに合わせて呼び分け
# PowerShell
.\.venv\Scripts\Activate.ps1:: cmd
.venv\Scripts\activate.bat# Git Bash / WSL
source .venv/Scripts/activate3. 同じ Python で作り直す
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
python --version # 3.11.x が出るはずpy ランチャーで使用バージョンを固定すると食い違いを防げる。
4. OS をまたぐ場合は作り直し
.venv の中身は OS と Python バージョンに依存する。
Linux で作った .venv を Windows にコピーしても動かないため、ターゲット OS で python -m venv し直す。