前の関連記事: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
まずライセンス表示が出てくるのでそれをスペースキーで送ります。
ライセンス表示の最後にでてくる承諾については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]:
In [2]:
import sqlalchemy
sqlalchemy.__version__
Out[2]:
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で使い方がわかります。
0 件のコメント:
コメントを投稿