0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで仮想環境をactivateしようとしたときに「セキュリティ エラー」が表示されて困った

0
Posted at

PowerShell の実行ポリシー(Execution Policy)の話

Python と Visual Studio Code をインストールしたその後で

 Pythonのプログラムを作ろうとして、Visual Studio Code のターミナルで仮想環境を作成してactivateを実行しようとしたとき、以下のエラーが出ることがあります。

PS \ws001> .\venv\Scripts\activate
.\venv\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、ファイル \venv\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。

発生場所 行:1 文字:1

+ .\venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

 PowerShell はセキュリティのため、デフォルトで スクリプトの実行を禁止しています。そのため activate がブロックされます。
 今後、プログラムを作る際にこのエラーが出ないようにするには、ポリシーを変更します。

PS \ws001> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

 これで、activateが実行できるようになります。

PS \ws002> .\venv\Scripts\activate                            
(venv) PS \ws002> 

設定の詳細

 PowerShellで設定できるポリシーは以下のものがあります。

  • Restricted → すべてのスクリプト実行を禁止(デフォルト)
  • RemoteSigned → ローカル作成のスクリプトは実行OK / インターネット由来は署名が必要
  • AllSigned → すべて署名付きのみ実行可能
  • Unrestricted → 全許可(警告は出る)
  • Bypass → 完全に制限なし・警告なし

 デフォルトで「スクリプト禁止」になっているので「ローカル作成のスクリプトは実行OK」に変更するとスクリプトが実行できるようになります。
 もともと安全を見越してスクリプト禁止にされているので、むやみやたらと許可に変更してはいけませんが、プログラムを作る際にスクリプトが使えないのは困ります。最低限動くようにしておきましょう。

 なお、「-Scope CurrentUser」は「現在のユーザーに実行ポリシーを設定」という意味になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?