PythonでvenvをActivateしようとすると「ソフトウェアの制限のポリシー (グループ ポリシーを使用して作成されたポリシーなど) によって操作がブロックされているため、…」が表示されてはまった
エラー内容
PowerShellで、
.\env\Scripts\Activate.ps1
を実行すると、以下のエラーになりました。
.\env\Scripts\Activate.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\myapp\env\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Pol
icies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\env\Scripts\Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Windows PowerShellスクリプトの実行ポリシーには以下の4つがあり、デフォルトがRestrictedである事が原因です。
Restricted - 実行できるスクリプトはありません。Windows PowerShell は対話型モードでのみ使用できます。
AllSigned - 信頼できる発行元が署名したスクリプトのみを実行できます。
RemoteSigned - ダウンロードしたスクリプトは信頼できる発行元が署名した場合にのみ実行できます。
Unrestricted - 制限なし。すべての Windows PowerShell スクリプトを実行できます。
そこで以下のコマンドでAllSignedに変更。
Set-ExecutionPolicy AllSigned
その後にActivateしたところ。
この信頼されていない発行元からのソフトウェアを実行しますか?
ファイル C:\Users\myapp\env\Scripts\Activate.ps1 の発行元は CN=Python Software
Foundation, O=Python Software Foundation, L=Beaverton, S=Oregon, C=US
であり、このシステムで信頼されていません。信頼された発行元からのスクリプトのみを実行してください。
[V] 常に実行しない(V) [D] 実行しない(D) [R] 一度だけ実行する(R) [A] 常に実行する(A) [?] ヘルプ (既定値は "D"): V
ここで誤って「[V] 常に実行しない(V)」を選択してしまい、その後にactivateを実行しても以下のエラーになりました。
.\env\Scripts\Activate.ps1 : ソフトウェアの制限のポリシー (グループ ポリシーを使用して作成されたポリシーなど) によって
操作がブロックされているため、ファイル C:\Users\myapp\env\Scripts\Activate.ps1
は読み込めません。
発生場所 行:1 文字:1
+ .\env\Scripts\Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
解決
調べていくと「信頼されていない証明書」に「Python Software Foundation」に入ってしまった事が原因だと分かったので、
certmgr.msc
を実行して、certmgrを開きます。
「信頼されていない証明書」を選択し、「Python Software Foundation」を探し、証明書を右クリック⇒削除しました。
備考
ソフトウェアの制限のポリシー (グループ ポリシーを使用して作成されたポリシーなど) によって
操作がブロックされているため、
↑のエラーが分かりくいです。
エラー文から最初は「ローカル セキュリティ ポリシー(secpol.msc)」が原因かな?と思ってしまい、はまってしまいました。
最近のコメント