linuxBean14.04(175)Anacondaの運用方法を考える

2017-09-06

旧ブログ

t f B! P L
Anacondaのバージョンアップがいまいち思い通りにいかないので運用方法を見直します。conda update --all、は使わないということです。

前の関連記事:linuxBean14.04(174)Anaconda3のcondaとSQLAlchemyをアップデート


conda update python=3.6ができない

pq@HP6730b1:~$ conda info
Current conda install:

               platform : linux-32
          conda version : 4.3.16
       conda is private : False
      conda-env version : 4.3.16
    conda-build version : 1.18.2
         python version : 3.5.3.final.0
       requests version : 2.13.0
       root environment : /home/pq/anaconda3  (writable)
    default environment : /home/pq/anaconda3
       envs directories : /home/pq/anaconda3/envs
                          /home/pq/.conda/envs
          package cache : /home/pq/anaconda3/pkgs
                          /home/pq/.conda/pkgs
           channel URLs : https://repo.continuum.io/pkgs/free/linux-32
                          https://repo.continuum.io/pkgs/free/noarch
                          https://repo.continuum.io/pkgs/r/linux-32
                          https://repo.continuum.io/pkgs/r/noarch
                          https://repo.continuum.io/pkgs/pro/linux-32
                          https://repo.continuum.io/pkgs/pro/noarch
            config file : None
           offline mode : False
             user-agent : conda/4.3.16 requests/2.13.0 CPython/3.5.3 Linux/3.13.0-116-generic debian/jessie/sid glibc/2.19
                UID:GID : 1000:1000
前回自宅のlinuxBean14.04のAnaconda3をアップデートしたので、職場のPCも同様にアップデートしようと思ったらPythonのバージョン3.5.3になっていました(なぜ?)。

自宅のAnacondaのPythonは3.6.0なので、職場のAnacondaのPythonも3.5.3からバージョンアップしてバージョンを揃えようと思いました。

conda update python
pq@HP6730b1:~$ conda update python
Fetching package metadata .........
Solving package specifications: .

Package plan for installation in environment /home/pq/anaconda3:

The following packages will be UPDATED:

    python: 3.5.3-1 --> 3.5.4-0

Proceed ([y]/n)? 
ダメです。

これはパッチバージョンが上がっただけでした。

conda install python=3.6

これでいけるはず、と思ったのですが、、、
pq@HP6730b1:~$ conda install python=3.6
Fetching package metadata .........
Solving package specifications: .

UnsatisfiableError: The following specifications were found to be in conflict:
  - abstract-rendering -> numpy 1.9* -> python 3.4* -> xz 5.0.5
  - python 3.6*
Use "conda info <package>" to see the dependencies for each package.
コンフリクトが発生してPython3.6にできません。

コンフリクトしているパッケージを削除すればアップグレードできそうですが、せっかくインストールしてあるものを削除する気にはなりません。

conda update anaconda
pq@HP6730b1:~$ conda upgrade anaconda
Fetching package metadata .........
Solving package specifications: .

# All requested packages already installed.
# packages in environment at /home/pq/anaconda3:
#
anaconda                  custom                   py35_0  
これもダメです。

conda update --all

これもpy35の範囲内ですべてのパッケージがアップグレードされるだけです。

conda install anaconda=4.4
pq@HP6730b1:~$ conda install anaconda=4.4
Fetching package metadata .........
Solving package specifications: .

UnsatisfiableError: The following specifications were found to be in conflict:
  - abstract-rendering
  - anaconda 4.4* -> llvmlite 0.18.0 py35_0
  - anaconda 4.4* -> numba 0.33.0 np112py35_0
  - anaconda 4.4* -> numexpr 2.6.2 np112py35_0
  - anaconda 4.4* -> scikit-learn 0.18.1 np112py35_1
Use "conda info <package>" to see the dependencies for each package.
もういっそのことAnaconda3を4.4にしてしまおうとしましたがこれもコンフリクトがでてきます。

結局linuxBean14.04(150)AnacondaとJupyter NotebookとLibreOffice5.2(失敗編)の轍を踏んだだけです。

どうもいい解決方法がみつからないので、Anacondaの運用方法自体を根本的に見直すことにしました。

conda update anacondaとconda update --allは相反する


conda update anaconda vs. conda update --all · Issue #1414 · conda/conda

conda update anaconda
conda update --all

この違いについて議論されています。

anacondaは依存関係を確認されたパッケージが組み合わされています。

conda update anaconda

これは依存関係が確認されたパッケージの組み合わせのみをアップデートすることになります。

anacondaが作成された時点のパッケージを使うことになるので、個別のパッケージについては最新版が使われる可能性が低くなります。

conda update --all

これはconda update anacondaと違って、なるべく最新のパッケージを使うように依存関係を計算してアップデートします。

依存関係を計算しながらアップデートするので、とても時間がかかります。

パッケージよっては依存関係からダウングレードされる場合もありますが、conda update anacondaと違ってより新しい版が使われるパッケージが多くなります。

なのでconda update anacondaとconda update --all は相反するものなのでどちらを使うか使い分けないといけないことになります。

私がAnaconda3を使う目的は各パッケージのインストールの手間を省くことではなく、依存性の問題に悩みたくないからなので、conda update --allは使わず、conda update anacondaだけ使うことにします。

ちなみにroot環境以外でconda update --allとしても反応はありませんでした。

Anacondaのバージョンアップは新規インストールにする


conda install anaconda=4.4としてバージョンアップしようとしても結局はパッケージがコンフリクトしてしまうので、バージョンアップは新規インストールですることにしました。

そしてそれまで構築した環境はそこにエクスポートすることにします。

conda env list

まずこれでいまある環境を確認します。
pq@pq-VirtualBox:~$ conda env list
# conda environments:
#
py35                     /home/pq/anaconda3/envs/py35
root                  *  /home/pq/anaconda3
この環境py35をエクスポートします。

conda env export -n 環境名 -f エクスポート先ファイル名

これでエクスポートできます。

conda env export -n py35 -f py35env

今回はこれで環境py35をpy35envファイルへ出力しました。

カレントディレクトリにpy35envというファイルができているはずです。

新たにAnacondaをインストールする前にすでにあるAnacondaのフォルダを削除します。

今回は~/anaconda3を~/anaconda3.oldと改名しました。

Anacondaフォルダはかなり大きいのでディスクの空き容量を確認しておかないといけません。

次にAnaconda4.4.0をインストールします。

これには3GiBが必要でした。

インストール手順はlinuxBean14.04(150)AnacondaとJupyter NotebookとLibreOffice5.2(失敗編)と同じです。

Downloads | Anaconda

ここからLinuxのPython 3.6 version 32-Bit Installer (428 MB)をダウンロードしました。

bash Anaconda3-4.4.0-Linux-x86.sh

Terminalからこのコマンドでインストーラーを起動しました。

まずライセンス表示が出てくるのでそれをスペースキーで送ります。

ライセンス表示の最後にでてくる承諾についてはyesを入力します。

インストール先フォルダを聞いてくるのでデフォルトのままホームフォルダにしました。

これでパッケージのインストールが始まります。
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/pq/.bashrc ? [yes|no]
[no] >>> 

You may wish to edit your .bashrc or prepend the Anaconda3 install location:

$ export PATH=/home/pq/anaconda3/bin:$PATH
.bashrcにパスを追加するかと聞いてきますがこれはデフォルトのままnoにしました。

これでインストール完了です。
pq@pq-VirtualBox:~$ python -V
Python 3.6.1 :: Anaconda 4.4.0 (32-bit)
pythonコマンドがAnacondaのpython 3.6.1になっていることがわかります。

pythonコマンドをpython2.7にしておかないとlinuxBean14.04のアップデートでエラーになるときがあるのでpythonコマンドをpython2.7になるようにしておかないといけません(linuxBean14.04(129)pythonコマンドにはpython2.7を割り当てておく)。

linuxBean14.04(115)pythonコマンドをpipコマンドとともに切り替えるで作成したシェルスクリプトanaとdeanaでpythonコマンドをAnacondaのものとpython2.7とを切り替えることができます。

conda env create -f py35env

これで先ほどエクスポートしておいた環境py35を戻します。

エクスポートファイルpy35envにはパッケージ一覧があるだけで、すべてのパッケージをインストールし直すので時間がかかります。
pq@pq-VirtualBox:~$ conda env list
# conda environments:
#
py35                     /home/pq/anaconda3/envs/py35
root                  *  /home/pq/anaconda3

pq@pq-VirtualBox:~$ source activate py35
(py35) pq@pq-VirtualBox:~$ python3 -V
Python 3.5.3 :: Anaconda custom (32-bit)
時間はかかりましたが、環境py35が復元できたと思います。
(py35) pq@pq-VirtualBox:~$ source activate root
(root) pq@pq-VirtualBox:~$ conda update anaconda
Fetching package metadata .........
Solving package specifications: .

Package plan for installation in environment /home/pq/anaconda3:

The following packages will be UPDATED:

    conda: 4.3.21-py36_0 --> 4.3.25-py36_0

Proceed ([y]/n)? 
root環境に戻してconda update anacondaとするとcondaだけアップデートされました。

conda update --allを使わなければ、conda install anaconda=4.5で次はアップデートできるかもしれませんので4.5がでたときに試してみたいと思います。

Jupyter Notebookを起動する


~/anaconda3/bin/jupyter-notebook

これでJupyter Notebookを起動できました(linuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールする参照)。

In [1]:
import sys
sys.version
Out[1]:
'3.6.1 |Anaconda 4.4.0 (32-bit)| (default, May 11 2017, 13:08:54) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]'
In [2]:
import sqlalchemy
sqlalchemy.__version__
Out[2]:
'1.1.9'
SQLAlchemyのバージョンは1.1.9になっていました。

EclipseのインタープリターのLibrariesが更新されていることを確認する


上記の方法でAnacondaをバージョンアップしてもAnacondaのPythonインタープリターのパスは変わらないのでEclipseのPyDevのプロジェクトのインタープリターの設定の変更は不要のはずです。

しかしインタープリターへのパスは変わらなくてもライブラリへのパスにはPythonのバージョン番号が入っているので変更しないといけません。

AnacondaのインタープリターをPyDevプロジェクトののインタープリターに指定しているときはEclipseを再起動するとPYTHONPATHを更新するかと聞かれるので、Applyボタンをクリックして更新します。

通常はこれでライブラリへのパスも新しいPythonインタープリターのものへ変更されるはずです。

Window→Preferences。

PyDev→Intepreters→Python Interpreter。


上のPython interpretersの欄からAnacondaのインタープリターのパスを選択すると下のLibrariesタブにそのインタープリターのライブラリのパスが表示されます。

すべてPython3.6のものになっていました。

参考にしたサイト


conda update anaconda vs. conda update --all · Issue #1414 · conda/conda
conda update anacondaとconda update --allは両立しないもののようです。

Downloads | Anaconda
Anacondaのダウンロードサイト。

Managing environments — Conda documentation
>を使ったexportはエラーがでてできませんでした。conda env export -hで使い方がわかります。

次の関連記事:linuxBean14.04(176)LibreOffice5.4.1のインストール

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ