はじめに
新しいPCでPythonの仮想環境を構築しようとしたところ、
仮想環境の有効化時にエラーが発生しました。
本記事では、このエラーの原因と解決方法、さらに各コマンドの意味について解説します。
動作環境
・windows11
・python 3.12.10
目次
1. 発生した問題
新しいPCで以下の手順で仮想環境を作成・有効化しようとしました。
python -m venv venv .\venv\Scripts\activate
しかし、以下のようなエラーが発生しました。
.\venv\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、
ファイル C:\Users\ユーザー名\venv\Scripts\Activate.ps1 を読み込むことが できません。
詳細については、「about_Execution_Policies」(https://go.microsoft.com/fw link/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
仮想環境自体は作成されているものの、有効化ができない状態です。
2. 原因
このエラーの原因は、WindowsのPowerShellにおける実行ポリシー(ExecutionPolicy)です。
PowerShellではセキュリティ対策として、デフォルトでスクリプトの実行が制限されています。
そのため、仮想環境の有効化スクリプト(Activate.ps1)がブロックされてしまいます。
3. 解決方法
実行ポリシーを変更することで解決できます。
用途に応じてPowerShellで以下を実行してください。
① 今回だけ有効にする
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Remotesigned
このコマンドの意味:
- Set-ExecutionPolicy:実行ポリシーを変更するコマンド
- Scope Process:現在のPowerShellセッションのみ有効
- ExecutionPolicy RemoteSigned:実行ポリシーを「RemoteSigned」に変更
RemoteSigned→ローカルスクリプトは許可、外部は署名が必要
② 常に有効にする(ユーザー単位で許可する)
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
このコマンドの意味:
- Scope CurrentUser:現在のユーザーに対して常に適用
今後も仮想環境を使う場合はこちらの方が便利です。
その後の手順
ポリシー変更後、再度以下を実行します。
.\venv\Scripts\activate
仮想環境が正常に有効化され、以下のように表示されるようになります。
(venv) PS C:\Users\...
これでPythonのパッケージを仮想環境内で管理できるようになります。
5. おわりに
実行ポリシーの変更はセキュリティに影響します。
自身の用途に合わせて、スコープやポリシー変更は最低限にとどめるとよいでしょう。