JavaScriptを有効にしてください

Windows10のPowerShellでAnaconda Pythonを使う方法

 ·   8 min read

はじめに

Windows 10のPowerShellでAnaconda Pythonを使えるようになるまでに苦労したので、備忘録として残す。
PowerShellが起動時に読み込むスクリプトに、Anacondaが使えるようになる設定を記述しておく。なお、本記事の設定に管理者権限は不要である。

環境

  • Windows 10 Home Ver. 1809
  • Anaconda3 Ver. 2019.03

設定方法のまとめ

始めに、実施方法を簡潔にまとめる。Anacondaはすでにインストールされているものとする。
まず、PowerShell起動時に読み込まれるスクリプトのパスを確認するため、PowerShellを起動して以下を実行する($の入力も必要)。

1
$profile

実行すると、以下のようなパスが表示される。

C:\Users\(ユーザ名)\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

フォルダが存在しない場合は作成してから、

1
notepad $profile

を実行して、メモ帳で設定ファイルMicrosoft.PowerShell_profile.ps1を開いておく(ファイルがない場合は作成される)。

次に、Windowsの「スタートメニュー」→「アプリ一覧」→「Anaconda3 (64-bit)」と進み、「Anaconda Powershell Prompt」を右クリックして、「その他」→「ファイルのある場所を開く」をクリックする。
すると、以下のようなAnacondaのショートカットのあるフォルダがエクスプローラで開かれる。

C:\Users\(ユーザ名)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)

さらに、Anaconda Powershell Promptのショートカットアイコンを右クリックして、プロパティを開くと、「リンク先」は以下のようになっているはずである(見やすいように改行した)。

1
2
3
4
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe 
-ExecutionPolicy ByPass -NoExit -Command 
"& 'C:\Users\(ユーザ名)\Anaconda3\shell\condabin\conda-hook.ps1' ;
 conda activate 'C:\Users\(ユーザ名)\Anaconda3' "

この中の

1
C:\Users\ユーザ名\Anaconda3\shell\condabin\conda-hook.ps1

をメモ帳で開き、中身をすべて先程のMicrosoft.PowerShell_profile.ps1にコピーし、その後ろに、

1
conda activate

というコマンドを追加する(下図参照)。

powershell_profile

Microsoft.PowerShell_profile.ps1conda-hook.ps1を閉じる。

PowerShellを再起動すると、スクリプトの実行が無効になっているため、Microsoft.PowerShell_profile.ps1を読み込めないとエラーが出る。そこで、現在のユーザがスクリプトを実行できるように以下のコマンドを入力する。

1
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

入力すると実行ポリシーを変更するか確認されるので、さらにYを入力する。

以上で設定は完了である。もう一度PowerShellを再起動すると、PythonとIPythonを自由に使えるようになる。

Pythonの実行例

1
2
3
4
(base) PS C:\Users\ユーザ名\Documents> python
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

IPythonを実行するには、ipythonと入力する。

設定の詳細

上記の設定方法について補足する。

Windows 7では、OSの環境変数にAnacondaのパスを追加するだけで、コマンドプロンプトからPythonを実行できた。
そのため、エクスプローラ上でShift+右クリックでコマンドプロンプトを起動し、現在のパスでPythonスクリプトを実行することが可能であった。

しかし、後述のようにWindows 10ではこの方法が使えなくなったので、代わりの方法を探した。
また、Windows 10ではShift+右クリックでPowerShellが起動するようになり、コマンドプロンプトに戻すには管理者権限が必要である。
管理者権限がない環境でも設定できるようにしたいため、PowerShellで実行できるようにする。

まず、既にAnacondaのインストールが終わっているものとして、PowerShellからPythonを実行できるか確認する。

1
2
3
4
5
6
7
8
9
PS C:\Users\ユーザ名\Documents> python
python : 用語 'python' コマンドレット関数スクリプト ファイルまたは操作可能なプログラムの名前として認識されま
せん名前が正しく記述されていることを確認しパスが含まれている場合はそのパスが正しいことを確認してから再試行してく
ださい
発生場所 :1 文字:1
+ python
+ ~~~~~~
    + CategoryInfo          : ObjectNotFound: (python:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

やはり実行できない。

次に、Windowsの環境変数に、Pythonの実行フォルダを追加してみた(実際に追加しても上手くいかないので注意)。

Anaconda Powershell PromptにはPythonのパスが通っているはずなので、以下のコマンドでパスを表示する。

1
2
3
4
5
6
7
8
9
(base) PS C:\Users\ユーザ名> $env:Path.split(";")
C:\Users\ユーザ名\Anaconda3
C:\Users\ユーザ名\Anaconda3\Library\mingw-w64\bin
C:\Users\ユーザ名\Anaconda3\Library\usr\bin
C:\Users\ユーザ名\Anaconda3\Library\bin
C:\Users\ユーザ名\Anaconda3\Scripts
C:\Users\ユーザ名\Anaconda3\bin
C:\Users\ユーザ名\Anaconda3\condabin
以下略

以上のAnaconda関係のフォルダを全てWindowsのパスに追加する。追加する方法は以下を参照。
環境変数の設定方法 | 若葉プログラミング塾

追加すると一応Pythonを起動できるが、環境がactivateされず、ライブラリが読み込めていないというエラーが出る。
実際、NumPyなどをインポートできず実質的にPythonを使えない。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
PS C:\Users\ユーザ名\Documents> python
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32

Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated.  Libraries may fail to load.  To activate this environment
please see https://conda.io/activation

Type "help", "copyright", "credits" or "license" for more information.
>>

そこで、Anaconda 2019.03 for Windows Installerから実装されたAnaconda Powershell Promptがどのように起動されているか確認する。
前述のように、Windowsの「スタートメニュー」→「プログラム」→「Anaconda3 (64-bit)」→「Anaconda Powershell Prompt」のプロパティの「リンク先」は以下のようになっていた。

1
2
3
4
%windir%\System32\WindowsPowerShell\v1.0\powershell.exe
 -ExecutionPolicy ByPass -NoExit -Command
 "& 'C:\Users\(ユーザ名)\Anaconda3\shell\condabin\conda-hook.ps1' ;
 conda activate 'C:\Users\(ユーザ名)\Anaconda3' "

すなわち、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でセキュリティポリシーの変更を現在のユーザのみに限ることで、管理者権限が不要になる。

1
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

以上の設定で、Shift+右クリックでPythonを実行可能なPowerShellが起動するようになる。

参考

下2つののサイトでは、パスを追加するだけでPythonを実行できるとあったが、筆者の環境では出来なかった。
2018年の記事なので、それ以降のWindows 10のアップデートにより出来なくなった可能性がある。
PowerShellでAnacondaを使う方法 | 山本隆の開発日誌
WindowsでPythonがうまく動かないとき(PATHの設定) - Qiita

PowerShellのセキュリティポリシーについては、以下を参照。
PowerShellのExecutionPolicyのスコープとかについて詳しく - Qiita

Anacondaを使って機械学習をするのであれば、オライリーの 「Pythonではじめる機械学習」 がオススメである。教師あり学習・教師なし学習や、特徴量選択などの基本事項が網羅されている。

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。Twitterで新着記事を配信中です