文書の過去の版を表示しています。


Pythonインストール(Anaconda)

Pythonのインストールには、WindowsではAnacondaを使うのが手っ取り早い。

概要

Anacondaの説明はいいからインストールだけしたい人はこちら。

Anacondaとは

  • Python本体
  • よく使うパッケージ詰め合わせセット
  • パッケージ管理ツール
  • 複数環境管理・切り替えツール
  • JupyterなどPython周辺ツール

の複合みたいなもの。

利点

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」という管理ツールが付属しているが、Anacondaでのパッケージ管理は専用の「conda」で行うことが推奨される。しかし、condaのレポジトリでは、依存関係情報がおかしい?ことによると思われるエラーがたまに発生する。

condaのリポジトリにはよく使うものは一通り揃っているが、少し用途特化なパッケージはpipほどは充実してないので、様々なチャンネルから掻い摘まんでインストールすることもある。どのチャンネルも依存関係の解決は自身のチャンネル内のパッケージで行おうとするので、よく依存されるNumPyなどのパッケージはインストールやアップデート時に上書き合戦が起こったりして、その分だけ時間がかかる。

有名なツールとはいえあくまで第三機関なので、情報量も相対的には少ない。エラーに遭遇したら解決策を探すより一旦破壊して作り直した方が速いこともあるが、再構築にもそれなりに時間がかかる。

Windowsでの他の手段

  • 直接インストール
    • pipでも一部パッケージはwheelでバイナリ化しての提供も行われるようになり(全てでは無いが)、失敗も起こりづらくなっている
    • 仮想環境にはvenvが使える
      • これは、あくまでインストールしたPython上で動くツールなので、Python自身のバージョンの切り替えはできない
      • インストールしたパッケージなどは、環境毎に保持される
      • 依存関係の不整合などのエラーが万一発生したとき、直接インストールした1環境しかないとどうしようも無くなるので、venvは使っておいた方がよい
  • VirtualBox, Dockerなどの仮想マシン上のLinuxに、直接インストール
    • 複数バージョンも、OS環境ごと用意してしまえる
    • 仮想マシンの立て方やLinuxについて、必要な勉強量は増える
    • ツールの設定が少し複雑になる
      • スクリプトをWindows上で管理したい場合はVirtualBoxでの共有フォルダの設定など
      • IDEから呼び出して実行させたい場合などは、IDEでのssh経由でのコマンド実行の設定など

インストール

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

時間はかかるので、任意で。

なお、2019年現在、どういう環境条件かは不明だが、NumPyが依存するパッケージ「mkl」で最新版を使うと、NumPy、またNumPyに依存するパッケージ使用時にdllロードエラーが発生することがある。

Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.

原因は様々だが、一つの対処法として、一旦mklとnumpyをアンインストールした後、mklをバージョン2018.0.2にてインストールし、その後NumPy他をインストールすると(少し最新版からバージョンは下がるが)ちゃんと動くという報告がある。

> conda install mkl=2018.0.2
> conda install numpy

この原因によるエラーの場合、うっかりconda update –allしちゃうとmklが最新版に戻ってエラーが再発するので、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超えてたとかいうことにもなりかねない。別にこまめにする必要は無いが、たまにはすることを覚えておく。

programming/python/install.1546884819.txt.gz · 最終更新: 2019/01/07 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0