TL;DR
PyCharmのteminalでterminalをpwshにしたら、venvが適用されなかったのでPowerShellのProfileを弄って解決したよ。
アプローチ
PyCharmのterminal設定はsettingsからpwshにできるんだけど、Activate virtualenv
にチェック入れててもvenvがアクティベートできない。
以下のコマンドを打つとVIRTUAL_ENV
環境変数は来てるようなので、これを活用する設定をPowerShellのプロファイルに施してみる。
PS> Write-Host $env:VIRTUAL_ENV
# U:\path\to\some_venv
作業
profileの設定
まず、$profile
を参照して Microsoft.PowerShell_profile.ps1
があるパスを見つける1。
PS> Write-Host $profile
# U:\path\to\Microsoft.PowerShell_profile.ps1
そしたら適当なエディタで開いて、中身を編集する。
PS> code $profile # VSCodeで開く
なかみはこんなかんじ。
$tmp_venv = $null
if ($null -ne $env:VIRTUAL_ENV) {
$tmp_venv = $env:VIRTUAL_ENV
try {
deactivate | Out-Null
}
catch {}
}
if ( -not ([string]::IsNullOrEmpty($tmp_venv)) -and (Test-Path -Path $tmp_venv)) {
. (Join-Path $tmp_venv "\Scripts\Activate.ps1" )
}
PyCharmの設定
- File > Settings メニュー
- Tools > Terminal タブ
- Application setting パネル
- Shell pathにpwshの場所を入力(
C:\Program Files\PowerShell\7\pwsh.exe
など) - Activate virtualenvにはチェックをつけておく(いるかわからんけど)
- Shell pathにpwshの場所を入力(
- Application setting パネル
- Tools > Terminal タブ
ためす
PyCharmのterminalを開いてみるとちゃんと適用できてるのがわかる。
PowerShell 7.1.0
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
(some_venv) PS>
-
$profile
はVSCodeで実行するとMicrosoft.VSCode_profile.ps1
(VSCodeのprofile)を返すようなので、VSCodeのPowerShell Extentionでプロファイルを探す場合には一回powershell
(またはps coreを使ってるならpwsh
)を叩いてからWrite-Host $profile
叩くとよい。 ↩