目次
文書の過去の版を表示しています。
Pythonインストール(Anaconda)
Pythonのインストールには、WindowsではAnacondaを使うのが手っ取り早い。
概要
Anacondaの説明はいいからインストールだけしたい人はこちら。
Anacondaとは
利点
Pythonは、NumPy・SciPyなどの豊富で強力なパッケージが魅力だが、いくつかの問題をはらむ。
- パッケージ同士の依存関係が複雑になりがち
- 特にWindowsでは、パッケージのインストールに失敗することがある(後述)
- 標準では1つのバージョンしかインストールできないが、提供されているパッケージの互換性などで複数バージョンを切り替えたい場合がある
Anacondaでは、魔法のようにとはいかないが、そこそこ便利にこれらに対する対策を与えてくれる。
管理ツール
condaというパッケージ管理ツールが付属し、複雑な依存関係を管理してくれる。
condaでなくとも、Pythonではpipという管理ツールがデフォで使える。しかしpipは「ソースの状態で提供するからビルドはローカルでやってね」的なインストール方法がとられるパッケージもあり、Windowsではその環境を別に整える必要がある。それらのツールも基本的にLinux向けなので、ややこしい。整えても、ソースがLinux前提で書かれていることによるビルドエラー(多分……ファイル開くときのデフォルトエンコードの違いなど)もあり、ソースから修正しないと入らないことも稀にある。condaはビルド済みで提供してくれるので失敗が少ない。
また、Anacondaのレポジトリで提供されていないパッケージをpip経由でインストールすることも可能。インストールしたパッケージはAnacondaからは依存関係の解決や更新などの対象にはならないが、ひとまず「インストールされている」という事実は保持してくれる。最後の手段ではあるが。
※pipでも、wheelというバイナリ化済みのファイルをダウンロードして、そのファイルからインストールすることも出来る。
複数環境を共存できる
異なるバージョンを両方インストールして切り替える使い方が出来る。
Anacondaの留意点
容量は肥大化しがち
NumPyなど、よく使うパッケージをデフォルトで入れてくれる。便利な反面、最小公倍数的にあれこれ入っているので、容量はそれなりに食う。複数環境を構築したらその分だけ重複して食う。
LinuxやMacなどでは、システムとの競合も
あまりOSを使わないので詳細は不明だが、LinuxではシステムとしてPython(2.x)が入っており、システムから利用されることもある。Anacondaを不用意にインストール・設定することでシステムのPythonより優先的に使用されるようになり、特にPython3を入れた場合など、トラブルの原因となることもあるようだ。
また、Anacondaの持つ各種ツールが、openssl, curlなどLinuxのシステムと同名なものもあるようで、それも競合してしまう。
Linuxでは上記のビルドエラーの失敗も起こりづらいため、Windowsと比較すると、Anacondaを採用する積極的理由は薄くなる。
Anaconda独自のパッケージ管理による手間・エラー
パッケージ管理がPythonのpipとは別物だが、依存関係情報がおかしい?ことによると思われるエラーがたまに発生する。
また、リポジトリにはよく使うものは一通り揃っているが、少し用途特化なpackageはpipほどは充実してないので、様々なチャンネルから掻い摘まんでインストールすることもある。あるチャンネルからインストールするpackageが依存するpackageは自身のチャンネルのものを使おうとするので、アップデート時に上書き合戦が起こったりする。その分だけ時間がかかる。
有名なツールとはいえあくまで第三機関なので、情報量も相対的には少ない。エラーに遭遇したら解決策を探すより一旦破壊して作り直した方が速いこともあるが、再構築にもそれなりに時間がかかる。
インストール
Anacondaのインストール
Pythonが既にインストール済みなら前もってアンインストール
普通にインストーラを落として実行。特に理由が無ければ最新のPython3.xでいい。
環境変数
環境変数は自分で指定する。
インストール時に特に何も変えないと、Anacondaのコアは「C:/Users/(ユーザ名)/Anaconda3
」にインストールされる。つまり、ユーザ毎にインストールされるということ。なので環境変数もユーザ環境変数を使うのがいいだろう。
ANACONDA_HOME = C:/Users/(ユーザ名)/Anaconda3 ANACONDA_ACTIVE = %ANACONDA_HOME% Path = (既存のPath);%ANACONDA_ACTIVE%;%ANACONDA_HOME%\Scripts
別に変数名とかこの通りで無くてもいい。あくまで一例。
%ANACONDA_HOME%
にはpython.exeがあり、最初にデフォルトで作られている環境である。
%ANACONDA_HOME%\Scripts
にはconda.exeやactivate.batなど、Anacondaのツールがある。Pathに追加すると、これらをどこからでも使えるようになる。
%ANACONDA_ACTIVE%
は通常状態でコマンドプロンプトで「python」とした時に呼ばれるpython.exeのある場所であり、とりあえずデフォルト環境を指定している。もし他の環境を呼ばれるようにしたい場合は、追加した環境は C:/Users/(ユーザ名)/Anaconda3/envs/(環境名)
に作成されるので、そこを指定する。
確認
コマンドプロンプトから、
> conda --version conda 4.3.30
などと表示されればOK。
アップデート
Anacondaのインストール時点で、主要なパッケージも付随してインストールされている。これをアップデートしておく。
> conda update --all
時間はかかるので、任意で。
環境の構築
インストール時点で、rootに環境は1つ用意される。
他に環境を用意したい時、
> conda create -n env_name(任意)
で“env_name”という名前の環境が用意される。
同時にPythonのバージョンや、最初から入れておくパッケージも指定できる。
> conda create -n env_name python=3.5 package1 package2 package3...
これだとpython3.5で用意される。同時にpackage1,2,3(仮称)というパッケージを最初から入れてくれる。
パッケージ名に“anaconda”を指定すると、人気パッケージ詰め合わせセットがインストールされる。結構な数にのぼる。
それはそれで便利とも言えるが、容量を食うし、IDEを使っている場合、起動時のキャッシュの構築に時間がかかったりするので、お好みで。
なおインストール時のrootのpythonには勝手に入る模様。
環境の切り替え
> activate env_name
これで、このセッションに限り、環境がenv_nameになる。
> deactivate
で元に戻る。
バッチファイル上での切り替え
バッチファイルまたは外部プログラムからの呼び出しで特定の環境を使いたい場合は、call
を付ける必要がある。
call activate {env_name} python {環境env_name上で実行したいスクリプト} call deactivate
パッケージのインストール
> conda install (package_name)
でインストール。
> conda search (package_name)
でどんなものがあるか検索できる。
デフォルトのチャンネルにパッケージが無い場合、別のチャンネルからインストールすることもできる。:: Anaconda Cloud の上の検索ボックスにパッケージ名の一部を入れると、提供しているチャンネルとバージョンがリスト表示される。ご丁寧にコマンドが記載されているので、そのままコマンドプロンプトに貼り付けると、インストールされる。
チャンネルはなるべく統一したい
複数のチャンネルを使うとチャンネルの依存関係が混在してしまうので、デフォルトにあるならなるべくそちらを使った方がよい。
例えば、デフォルトチャンネルからNumPyをインストールした環境に、別のチャンネル(Aとする)から「NumPyに依存する、別のパッケージ」をインストールすると、NumPyはチャンネルAのものに置き換わってしまう。基本的にはどのチャンネルでも最新版が保たれていて同じように動作することを期待してしまうが、なかなかそうでも無いので、競合が発生してインストールできなかったり、「デフォルトチャンネルから過去にインストール済みの、NumPyに依存する第3のパッケージ」に影響が出ることも稀にある。
また、NumPyがチャンネルAのものに置き換わった状態で、デフォルトチャンネルのNumPyに依存するパッケージをinstallまたはupdateすると、当然同じようにNumPyはデフォルトチャンネルのものに置き換わる。NumPy以外の他の被依存パッケージでも同様なことが起こると、常に上書き合戦が行われ、いちいち時間がかかってしまう。
環境の掃除
しばらく使ってると、ゴミが溜まってくる。特に一度インストールしたパッケージ(の圧縮ファイル)は、アンインストールしたり新しいバージョンに更新したりしても、キャッシュとして残り続けるため、容量を食う。
> conda clean --all
掃除しないと、気がつけばAnacondaのフォルダが数十GB超えてたとかいうことにもなりかねない。別にこまめにする必要は無いが、たまにはすることを覚えておく。