基本情報
開発マシン:Windows11
開発環境:VSCode
言語:python
プロジェクトのフォルダ:D:\python\myproject
仮想環境:D:\python\myproject\.venv
前提条件
PowerShellの実行ポリシーを恒久的にBypassやRemoteSignedをしたくない。
Python仮想環境アクティベートのエラー
Windows11等のクライアント端末ではデフォルトでスクリプトの実行が制限されています。そのため、Pythonの仮想環境にアクティベートしようとすると、以下の通りエラーになります(VSCodeであらかじめプロジェクトのフォルダを開いておき、ターミナルで実行しています)。
PS D:\python\myproject> .\.venv\Scripts\activate
.\.venv\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、ファイル D:\python\myproject\.venv\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies
」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\.venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
このエラーを解消するため、例えば
PS D:\python\myproject>Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
等として、このプロセス限定でスクリプトの実行を許可して、
PS D:\python\myproject> .\.venv\Scripts\activate
(.venv) PS D:\python\myproject>
# 入力部分の先頭に(.venv)が付いたので仮想環境がアクティベートされたことがわかる
とアクティベートしていました。しかしプロセスが変わるたび、この2行を毎回実行するのが手間で、せめて1回で実行するコマンドを作成しました。
一発アクティベートコマンド
下記にて上記コマンド2つを1行で実行できます。他のプロジェクトでも仮想環境名を同じ(私の場合.venv)にしておけば、使いまわしできます。
PS D:\python\myproject> Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass; .\.venv\Scripts\Activate.ps1
単純にPowerShellコマンドをセミコロン(;)でつないだだけですが、それに気づかずしばらく手間だな~と思いながら2行打っていたので、同様に思っている方に届けばと思い投稿しました。
課題
基本的に開発時に環境を立ち上げ、一回実行すればよいかなと思っていましたが、F5でデバッグ実行の際にデバッグ用のターミナルが新規で開くため、別プロセスのためエラーになってしまいます。現状はそちらで再度、上記のコマンドを実行しています。
何か良い方法をご存じの方がいたらご教示頂けると幸いです!