PowerShellにてAnaconda Pythonの仮想環境をactivateしようとしてactivate (仮想環境名)
というコマンドを実行しても何も起こりません。これを修正しようとしたときにやったことのメモです。注:私はAnaconda PythonにもPowerShellにも精通していないため、これが正しい方法かはわかりません。
condaのバージョンを最新にする
conda --version
でバージョンを調べると4.5.11
と古かったので、以下の方法で4.9.2
にupdate- 管理者権限つきコマンドプロンプトを開く
conda update -n base -c defaults conda
を実行
Windows PowerShell から Anaconda 環境を起動できるようにするための初期化コマンドを実行
- windows powershell (powershell.exe)を起動
- Anaconda がやっと PowerShell に公式対応した - Qiita を参考に
conda init powershell
を実行 - 以下が表示される
> conda init powershell no change C:\ProgramData\Anaconda3\Scripts\conda.exe no change C:\ProgramData\Anaconda3\Scripts\conda-env.exe no change C:\ProgramData\Anaconda3\Scripts\conda-script.py no change C:\ProgramData\Anaconda3\Scripts\conda-env-script.py no change C:\ProgramData\Anaconda3\condabin\conda.bat no change C:\ProgramData\Anaconda3\Library\bin\conda.bat no change C:\ProgramData\Anaconda3\condabin\_conda_activate.bat no change C:\ProgramData\Anaconda3\condabin\rename_tmp.bat no change C:\ProgramData\Anaconda3\condabin\conda_auto_activate.bat no change C:\ProgramData\Anaconda3\condabin\conda_hook.bat no change C:\ProgramData\Anaconda3\Scripts\activate.bat no change C:\ProgramData\Anaconda3\condabin\activate.bat no change C:\ProgramData\Anaconda3\condabin\deactivate.bat modified C:\ProgramData\Anaconda3\Scripts\activate modified C:\ProgramData\Anaconda3\Scripts\deactivate modified C:\ProgramData\Anaconda3\etc\profile.d\conda.sh modified C:\ProgramData\Anaconda3\etc\fish\conf.d\conda.fish no change C:\ProgramData\Anaconda3\shell\condabin\Conda.psm1 modified C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1 no change C:\ProgramData\Anaconda3\Lib\site-packages\xontrib\conda.xsh modified C:\ProgramData\Anaconda3\etc\profile.d\conda.csh modified C:\Users\(ユーザ名)\Documents\PowerShell\profile.ps1 modified C:\Users\(ユーザ名)\Documents\WindowsPowerShell\profile.ps1 ==> For changes to take effect, close and re-open your current shell. <==
改変されたprofile.ps1を確認
このコマンドによって改変されたC:\Users\(ユーザ名)\Documents\PowerShell\profile.ps1
およびC:\Users\(ユーザ名)\Documents\WindowsPowerShell\profile.ps1
を見に行くと、いずれにも以下のコードが付け足されていることを確認しました。(profile.ps1が2つあるのは、たぶんWindows 10に組み込みで入っているWindows PowerShellに加えて、私がPowerShell Coreを別途インストールしてあることが原因です。)
#region conda initialize # !! Contents within this block are managed by 'conda init' !! (& "C:\ProgramData\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression #endregion
スクリプト実行ポリシーを変更
次に、さきほどの指示通り別のWindows PowerShellを起動すると、以下のエラーが出ました。
. : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\(ユーザ名)\Documents\WindowsPowerShell\profile.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=13517 0) を参照してください。 発生場所 行:1 文字:3 + . 'C:\Users\(ユーザ名)\Documents\WindowsPowerShell\profile.ps1' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
これは、私のWindows Powershellのスクリプト実行ポリシーがRestricted
のままだったことが原因でした。
> Get-ExecutionPolicy Restricted
そこで、管理者権限付きのWIndows PowerShellを起動して、以下のコマンドを実行し、スクリプト実行ポリシーを変更しました(注:システム全体に影響を与えます)。
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
そして、改めてまた別のWIndows PowerShellを起動することで、無事Anaconda Pythonを使えるPowerShell環境ができたようです。conda activate
による環境の変更も実現できています。
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6 パーソナル プロファイルとシステム プロファイルの読み込みにかかった時間は 1083 ミリ秒です。 (base) PS C:\Users\(ユーザ名)> conda activate sandbox (sandbox) PS C:\Users\(ユーザ名)>
同様に、PowerShell CoreからもAnaconda Pythonが使えることを確認しました。
ただ、profile.ps1
のコードが増えた影響か、Windows PowerShellを起動するたび毎回約1秒かかるようになってしまいました。これが嫌な場合、Anaconda がやっと PowerShell に公式対応した - Qiita を真似して、condaini
という名前の関数を手動で呼んだときだけAnaconda Pythonが使えるように変更するのがよさそうです(私は未テスト)。以下にコードを引用します。
#region conda initialize Function condaini{ (& "c:\Users\user\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression } #endregion