※記事内に商品プロモーションを含むことがあります。
はじめに
Windows 10のPowerShellでAnaconda Pythonを使えるようになるまでに苦労したので、備忘録として残す。
PowerShellが起動時に読み込むスクリプトに、Anacondaが使えるようになる設定を記述しておく。なお、本記事の設定に管理者権限は不要である。
環境
- Windows 10 Home Ver. 1809
- Anaconda3 Ver. 2019.03
設定方法のまとめ
始めに、実施方法を簡潔にまとめる。Anacondaはすでにインストールされているものとする。
まず、PowerShell起動時に読み込まれるスクリプトのパスを確認するため、PowerShellを起動して以下を実行する($
の入力も必要)。
|
|
実行すると、以下のようなパスが表示される。
|
|
フォルダが存在しない場合は作成してから、
|
|
を実行して、メモ帳で設定ファイルMicrosoft.PowerShell_profile.ps1
を開いておく(ファイルがない場合は作成される)。
次に、Windowsの「スタートメニュー」→「アプリ一覧」→「Anaconda3 (64-bit)」と進み、「Anaconda Powershell Prompt」を右クリックして、「その他」→「ファイルのある場所を開く」をクリックする。
すると、以下のようなAnacondaのショートカットのあるフォルダがエクスプローラで開かれる。
|
|
さらに、Anaconda Powershell Promptのショートカットアイコンを右クリックして、プロパティを開くと、「リンク先」は以下のようになっているはずである(見やすいように改行した)。
|
|
この中の
|
|
をメモ帳で開き、中身をすべて先程のMicrosoft.PowerShell_profile.ps1
にコピーし、その後ろに、
|
|
というコマンドを追加する(下図参照)。
Microsoft.PowerShell_profile.ps1
とconda-hook.ps1
を閉じる。
PowerShellを再起動すると、スクリプトの実行が無効になっているため、Microsoft.PowerShell_profile.ps1を読み込めないとエラーが出る。そこで、現在のユーザがスクリプトを実行できるように以下のコマンドを入力する。
|
|
入力すると実行ポリシーを変更するか確認されるので、さらにYを入力する。
以上で設定は完了である。もう一度PowerShellを再起動すると、PythonとIPythonを自由に使えるようになる。
Pythonの実行例
|
|
IPythonを実行するには、ipythonと入力する。
設定の詳細
上記の設定方法について補足する。
Windows 7では、OSの環境変数にAnacondaのパスを追加するだけで、コマンドプロンプトからPythonを実行できた。
そのため、エクスプローラ上でShift+右クリックでコマンドプロンプトを起動し、現在のパスでPythonスクリプトを実行することが可能であった。
しかし、後述のようにWindows 10ではこの方法が使えなくなったので、代わりの方法を探した。
また、Windows 10ではShift+右クリックでPowerShellが起動するようになり、コマンドプロンプトに戻すには管理者権限が必要である。
管理者権限がない環境でも設定できるようにしたいため、PowerShellで実行できるようにする。
まず、既にAnacondaのインストールが終わっているものとして、PowerShellからPythonを実行できるか確認する。
|
|
やはり実行できない。
次に、Windowsの環境変数に、Pythonの実行フォルダを追加してみた(実際に追加しても上手くいかないので注意)。
Anaconda Powershell PromptにはPythonのパスが通っているはずなので、以下のコマンドでパスを表示する。
|
|
以上のAnaconda関係のフォルダを全てWindowsのパスに追加する。追加する方法は以下を参照。
環境変数の設定方法 | 若葉プログラミング塾
追加すると一応Pythonを起動できるが、環境がactivateされず、ライブラリが読み込めていないというエラーが出る。
実際、NumPyなどをインポートできず実質的にPythonを使えない。
|
|
そこで、Anaconda 2019.03 for Windows Installerから実装されたAnaconda Powershell Promptがどのように起動されているか確認する。
前述のように、Windowsの「スタートメニュー」→「プログラム」→「Anaconda3 (64-bit)」→「Anaconda Powershell Prompt」のプロパティの「リンク先」は以下のようになっていた。
|
|
すなわち、powershell.exe
を起動し、
C:\Users\(ユーザ名)\Anaconda3\shell\condabin\conda-hook.ps1
のスクリプトを実行した後、conda activate
コマンドを実行していることが分かる。
これをPowerShell起動時に実行してやれば、Anaconda Powershell Promptと同じ環境になる。
PowerShellは、起動時にprofile変数にある設定ファイル(初期設定ではMicrosoft.PowerShell_profile.ps1)を読み込みに行くので、以上のコマンドを設定ファイルに記述する。
ただし、Windows 10の初期設定では、セキュリティポリシーによって設定ファイルの読み込みが制限されている。
そこで、以下のコマンドでローカルにあるスクリプトを実行可能にする。
-Scope CurrentUser
でセキュリティポリシーの変更を現在のユーザのみに限ることで、管理者権限が不要になる。
|
|
以上の設定で、Shift+右クリックでPythonを実行可能なPowerShellが起動するようになる。
参考
下2つののサイトでは、パスを追加するだけでPythonを実行できるとあったが、筆者の環境では出来なかった。
2018年の記事なので、それ以降のWindows 10のアップデートにより出来なくなった可能性がある。
PowerShellのセキュリティポリシーについては、以下を参照。