はじめに

新しい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. おわりに

実行ポリシーの変更はセキュリティに影響します。
自身の用途に合わせて、スコープやポリシー変更は最低限にとどめるとよいでしょう。