はじめに
ひとこと
アクセスしていただきありがとうございます。
Pythonをメインとしていない筆者が、Pythonで簡単なアプリを開発したときにPowerShellの実行ポリシーでつまずき、また偶然にも同じ問題に遭遇している人から質問されたので、記事にまとめます。
目的
- PowerShellの実行ポリシーについて知る
- PowerShellの実行ポリシーの問題を解決する
検証済みの環境
- Windows11 Home x64
- PowerShell 7.5
- Python 3.13.5
ご注意
- この記事の情報は 2025/11/18現在 のものです
- この記事ではWindowsのレジストリを変更するコマンドを扱います。レジストリに対して誤った操作を実行すると、システムが起動しなくなるなどの可能性があります。実行する場合は自己責任でお願いします
1.問題の整理
例えば .venv という名前のPythonの仮想環境を有効化しようとしているとします
.venv\Scripts\Activate.ps1
すると次のようなエラーが表示される場合があります
.venv\Scripts\Activate.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:~\.venv\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .venv\Scripts\Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティエラー: (: ) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
2.問題の解説
PowerShell
PowerShell とは コマンドプロンプト に代わる次世代のシェルです。
例えば新しくフォルダを作成するなどの単一のコマンドレット(コマンド)はもちろん、一般的なプログラミング言語のように、そのコマンドを組み合わせて スクリプト としてファイルにまとめて実行することもできます。
仮想環境の起動
仮想環境を構築した後、実際に開発するときには仮想環境を起動する必要があります。そのためには仮想環境を構築するときに自動で生成される Activate.ps1 というファイルをPowerShellから実行します。
実行ポリシー
PowerShellには 実行ポリシー という設定があります。これは悪意のある攻撃でPowerShellを使われないようにするためです。
デフォルトでは、コマンドは実行できるが、(前述の)スクリプト、この問題におけるActivate.ps1は実行できないような実行ポリシー(Restricted)に設定されています。
3.問題の解決
「ご注意」にも書きましたが、Windowsのレジストリを変更するコマンドを扱います。レジストリに対して誤った操作を実行すると、システムが起動しなくなるなどの可能性があります。実行する場合は自己責任でお願いします。
概要
実行ポリシーを Restricted から RemoteSigned に変更します。この実行ポリシーでは、 Restricted でできることに加えて、 ローカルで作成されたスクリプトならば実行できる ようになります。
また、すべてのユーザーに対して変更することもできますが、ここでは現在のユーザーの実行ポリシーを変更する方法を紹介します。
実行ポリシーを変更する
PowerShellで次のコマンドレットを実行します。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
もう一度、仮想環境の有効化を実行する
PowerShellで次のスクリプトを実行します(.venvという名前の仮想環境を想定しています)。
.venv\Scripts\Activate.ps1
それでも仮想環境を有効化できない場合
現在の実行ポリシーを確認する
PowerShellで次のコマンドレットを実行してください。
Get-ExecutionPolicy -List
次のように、 CurrentUser が RemoteSigned に設定されているかを確認してください。
そうでない場合は、もう一度実行ポリシーを変更してください。
Scope ExecutionPolicy
----- ---------------
CurrentUser RemoteSigned
Windowsを再起動する
Windowsを再起動してみてください。
おわりに
最後までお読みいただきありがとうございます。
初心者向けの「実行環境とは何か」という記事も執筆中ですので、今しばらくお待ちください。