linuxBean14.04(150)AnacondaとJupyter NotebookとLibreOffice5.2(失敗編)

2017-03-18

旧ブログ

t f B! P L
LibreOffice5.2のインタープリターでJupyter Notebookを使えるようにします。いまはIPython NotebookではなくJupyter Notebookというようです。結論としてはうまくできませんでした。
(2017.3.19追記。原因が判明しうまくいきました。linuxBean14.04(152)AnacondaとJupyter NotebookとLibreOffice5.2(成功編)参照。)

前の関連記事:linuxBean14.04(149)LibreOfficeマクロ開発環境の構築:その1


Anaconda 2.3.0を4.3.1にアップグレードする、、、ことはできず


linuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールするのAnaconda2.3.0が4.3.1になっているのでアップグレードします。

AnacondaのPythonインタープリターの使用はPATHで設定されているので、その有効無効を変更するスクリプトをlinuxBean14.04(115)pythonコマンドをpipコマンドとともに切り替えるで作成しましたので、まず. anaでAnacondaを有効にします。
pq@pq-VirtualBox:~$ . ana
pq@pq-VirtualBox:~$ python3 -V
Python 3.4.3 :: Anaconda 2.3.0 (32-bit)
これでAnacondaが有効になりました。

まずはconda自身のアップデートをします。

conda update conda
pq@pq-VirtualBox:~$ conda update conda
Fetching package metadata: ....
Solving package specifications: ....................
Package plan for installation in environment /home/pq/anaconda3:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    conda-env-2.6.0            |                0          502 B
    libffi-3.2.1               |                1          38 KB
    openssl-1.0.2k             |                1         2.6 MB
    sqlite-3.13.0              |                0         1.1 MB
    xz-5.2.2                   |                1         650 KB
    zlib-1.2.8                 |                3          85 KB
    python-3.4.5               |                0        14.7 MB
    idna-2.2                   |           py34_0         125 KB
    pyasn1-0.2.3               |           py34_0          80 KB
    pycosat-0.6.2              |           py34_0         195 KB
    pycparser-2.17             |           py34_0         158 KB
    requests-2.13.0            |           py34_0         814 KB
    ruamel_yaml-0.11.14        |           py34_1         372 KB
    setuptools-27.2.0          |           py34_0         527 KB
    wheel-0.29.0               |           py34_0          82 KB
    cffi-1.9.1                 |           py34_0         324 KB
    pip-9.0.1                  |           py34_1         1.7 MB
    cryptography-1.7.1         |           py34_0         795 KB
    pyopenssl-16.2.0           |           py34_0          71 KB
    conda-4.3.14               |           py34_0         508 KB
    ------------------------------------------------------------
                                           Total:        24.7 MB
うーん、updateされるのはPython3.4のものですね。

conda update anaconda

これでanaconda自体アップデートできるのかと思いましたが、そうでもないようです。
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:

    anaconda:       2.3.0-np19py34_0   <unknown> --> custom-py34_0    
    curl:           7.43.0-1                     --> 7.52.1-0         
    flask:          0.10.1-py34_1      <unknown> --> 0.10.1-py34_2    
    pandas:         0.17.0-np110py34_0           --> 0.17.1-np19py34_0
    pycurl:         7.19.5.1-py34_2    <unknown> --> 7.43.0-py34_2    
    pyqt:           4.11.3-py34_1      <unknown> --> 4.11.4-py34_3    
    sockjs-tornado: 1.0.1-py34_0       <unknown> --> 1.0.3-py34_0     
    terminado:      0.5-py34_0         <unknown> --> 0.6-py34_0       

The following packages will be SUPERCEDED by a higher-priority channel:

    libxml2:        2.9.2-0            <unknown> --> 2.9.0-0          
    scikit-image:   0.11.3-np19py34_0  <unknown> --> 0.11.3-np19py34_0

The following packages will be DOWNGRADED due to dependency conflicts:

    freetype:       2.5.5-0                      --> 2.5.2-2          
    numpy:          1.10.0-py34_0                --> 1.9.3-py34_0     

Proceed ([y]/n)? 
うーん、とりあえずこれはやめにしました。

LibreOffice5.2のPythonインタープリターはPython 3.5.0なので、conda search pythonで探すと3.5.0がでてきたのでまずそれをインストールすることにしました。

conda install python=3.5.0
pq@pq-VirtualBox:~$ conda install python=3.5.0
Fetching package metadata .........
Solving package specifications: .


UnsatisfiableError: The following specifications were found to be in conflict:
  - beautiful-soup -> python 3.3*
  - python 3.5.0*
Use "conda info <package>" to see the dependencies for each package.
これもダメですね。

conda install anaconda=4.3
pq@pq-VirtualBox:~$ conda install anaconda=4.3
Fetching package metadata .........
Solving package specifications: .


UnsatisfiableError: The following specifications were found to be in conflict:
  - anaconda 4.3* -> llvmlite 0.15.0 py36_0
  - anaconda 4.3* -> numba 0.30.1 np111py36_0
  - anaconda 4.3* -> numexpr 2.6.1 np111py36_2
  - anaconda 4.3* -> scikit-learn 0.18.1 np111py36_1
  - basemap
Use "conda info <package>" to see the dependencies for each package.
これもダメですね。

もうあきらめて新規にAnaconda 4.3.1をインストールし直すことにしました。
(結局Anacondaの再インストールをしなくても次にやっているようにconda create -n py350 python=3.5.0 anacondaとすればよかったようです。)

ディスク容量がなかったので~/anaconda3フォルダを削除しました。

. deanaでPATHも戻しておきました。

これまでやってきたAnaconda関連がすべて消えてしまうので、ディスク容量があれば改名して置いといたほうがよいでしょう。

Anaconda 4.3.1をインストールしてPython 3.5.0もインストールする


Download Anaconda Now! | Continuum

ここからPython3.6 versionの32-BIT INSTALLERをクリックしてAnaconda3-4.3.1-Linux-x86.shをダウンロードしました。

bash Anaconda3-4.3.1-Linux-x86.sh 

このコマンドでインストールしました。
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/pq/.bashrc ? [yes|no]
[no] >>> no
これはlinuxBean14.04(115)pythonコマンドをpipコマンドとともに切り替えるのanaとdeanaを使うのでnoにしました。
pq@pq-VirtualBox:~$ which python3
/usr/bin/python3
pq@pq-VirtualBox:~$ . ana
pq@pq-VirtualBox:~$ which python3
/home/pq/anaconda3/bin/python3
pq@pq-VirtualBox:~$ python3 -V
Python 3.6.0 :: Anaconda 4.3.1 (32-bit)
これでインストール完了です。

conda update conda

conda update --all
(2017.9.6追記。これをすると依存関係が確認されているパッケージの集合というAnacondaのメリットの一つが失われるようです。linuxBean14.04(175)Anacondaの運用方法を考える参照。)

アップデートもしました。

conda update --allはとても時間がかかりました。

結果的にpythonもアップデートされて3.5.0から3.5.3になりました。

LibreOffice5.2のPythonインタープリターと同じPython 3.5.0をインストールします(linuxBean14.04(86)AnacondaのパッケージをLibreOfficeマクロで使う参照)。

conda create -n py350 python=3.5.0 anaconda
pq@pq-VirtualBox:~$ conda env list
# conda environments:
#
py350                    /home/pq/anaconda3/envs/py350
root                  *  /home/pq/anaconda3

pq@pq-VirtualBox:~$ source activate py350
(py350) pq@pq-VirtualBox:~$ conda update --all
conda env list

これでPython 3.5.0に切り替えるにはsource activate py350とすればよいことがわかります。

py350に切り替えてconda update --allとするとまたいっぱいアップデートされるパッケージがでてきました、、、なぜだ、、、もう寝よう、、、

py350に切り替えてconda update --allにするとPythonインタープリターも3.5.3にアップデートしてしまうのでしてはいけません。

5.3.0にアップデートするとLibreOfficeのインタープリターでJupyter Notebookを起動できなかったので、conda remove --name py350 --allでアップデートしたpy350は削除して、また3.5.0をインストールし直しました。

Jupter Notebookの起動

pq@HP6730b1:~$ which python3
/usr/bin/python3
pq@HP6730b1:~$ . ana
pq@HP6730b1:~$ which python3
/home/pq/anaconda3/bin/python3
pq@HP6730b1:~$ source activate py350
(py350) pq@HP6730b1:~$ jupyter notebook
これでPython 3.5.0でJupyter Notebookを起動できました。

jupyter notebook --notebook-dir=~/.config/libreoffice/4/user/Scripts/python

これでマイマクロフォルダを指定してJupyter Notebookを起動できました。

linuxBean14.04(86)AnacondaのパッケージをLibreOfficeマクロで使うのsites.pthを設定していないのでLibreOfficeのPythonインタープリターではJupyter Notebookは起動できません。
(py350) pq@HP6730b1:~$ python3
Python 3.5.3 |Anaconda custom (32-bit)| (default, Mar  6 2017, 11:57:42)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/pq/anaconda3/envs/py350/lib/python35.zip', '/home/pq/anaconda3/envs/py350/lib/python3.5', '/home/pq/anaconda3/envs/py350/lib/python3.5/plat-linux', '/home/pq/anaconda3/envs/py350/lib/python3.5/lib-dynload', '/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages', '/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/Sphinx-1.5.1-py3.5.egg', '/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg']
~/.local/lib/python3.5/site-packages/sites.pthにこの最後の行のパスを1行ずつ入力して保存しました。

 /opt/libreoffice5.2/program/python ~/anaconda3/envs/py350/bin/jupyter notebook

これでJupyter NotebookがLibreOffice5.2のバンドルPythonで起動できると思ったのですがエラーがでてきて起動しません。
pq@HP6730b1:~$  /opt/libreoffice5.2/program/python ~/anaconda3/envs/py350/bin/jupyter notebook
jupyter: 'notebook' is not a Jupyter command
pq@HP6730b1:~$ /opt/libreoffice5.2/program/python ~/anaconda3/envs/py350/bin/jupyter-notebook
Traceback (most recent call last):
  File "/home/pq/anaconda3/envs/py350/bin/jupyter-notebook", line 4, in <module>
    from notebook.notebookapp import main
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/notebook/notebookapp.py", line 32, in <module>
    from zmq.eventloop import ioloop
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/zmq/__init__.py", line 66, in <module>
    from zmq import backend
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/zmq/backend/__init__.py", line 41, in <module>
    reraise(*exc_info)
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/zmq/utils/sixcerpt.py", line 34, in reraise
    raise value
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/zmq/backend/__init__.py", line 29, in <module>
    _ns = select_backend(first)
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/zmq/backend/select.py", line 27, in select_backend
    mod = __import__(name, fromlist=public_api)
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/zmq/backend/cython/__init__.py", line 6, in <module>
    from . import (constants, error, message, context,
ImportError: cannot import name 'constants'
 /opt/libreoffice5.2/program/python ~/anaconda3/envs/py350/bin/jupyter-notebook、としてもダメで結局解決できませんでした。
pq@HP6730b1:~$ /opt/libreoffice5.2/program/python
Python 3.5.0 (default, Feb 28 2017, 17:22:52)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/numpy/__init__.py", line 180, in <module>
    from . import add_newdocs
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/numpy/add_newdocs.py", line 13, in <module>
    from numpy.lib import add_newdoc
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/numpy/lib/__init__.py", line 8, in <module>
    from .type_check import *
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/numpy/lib/type_check.py", line 11, in <module>
    import numpy.core.numeric as _nx
  File "/home/pq/anaconda3/envs/py350/lib/python3.5/site-packages/numpy/core/__init__.py", line 14, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray'
numpyのインポートも失敗してしまいます。

久しぶりにPythonを扱ったので、何か設定が抜けているのか、それともPython3.3と3.5で仕様が変わったせいなのか、原因はよくわかりませんでした。

Cython利用の問題?

結局Python 3.5.3でJupyter Notebookを使うことにした

pq@pq-VirtualBox:~$ conda env list
# conda environments:
#
py350                    /home/pq/anaconda3/envs/py350
root                  *  /home/pq/anaconda3

pq@pq-VirtualBox:~$ source activate py350
(py350) pq@pq-VirtualBox:~$ python3 -V
Python 3.5.3 :: Anaconda custom (32-bit)
conda update --allをしたのでpy350でPython 3.5.3になっているのでpy350をpy35にk改名することにしました。

conda create --name py35 --clone py350

環境名を変更するコマンドはないようなので、まずpy35という名前でpy350をコピーしました。

conda remove --name py350 --all

コピー元になったpy350を削除しました。
(root) pq@pq-VirtualBox:~$ conda env list
# conda environments:
#
py35                     /home/pq/anaconda3/envs/py35
root                  *  /home/pq/anaconda3
これでpy35の環境が作成できました。
(root) pq@pq-VirtualBox:~$ source activate py35
(py35) pq@pq-VirtualBox:~$ python3 -V
Python 3.5.3 :: Anaconda custom (32-bit)
(py35) pq@pq-VirtualBox:~$ jupyter notebook
jupyter notebook

これでJupyter Notebookが起動できます。

しかしいちいちAnacondaの環境を立ち上げるのは面倒なので、linuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールするの時と同様に直接起動するランチャを作成しました。
 
/home/pq/anaconda3/envs/py35/bin/jupyter-notebook --notebook-dir=/home/pq/JupyterNotebook

コマンドはこのようにpy35の環境のjupyter-notebookを/home/pq/JupyterNotebookフォルダで起動するようにしました。
#!/bin/bash
file_path=$1
cd ${file_path%/*}
export PATH=~/anaconda3/envs/py35/bin:$PATH
~/anaconda3/envs/py35/bin/jupyter nbconvert --template basic $1

linuxBean14.04(87)ipynbファイルをnbconvertするシェルスクリプトで作成したipynb_basic_convert.shもこのように書き換えました。

参考にしたサイト


Download Anaconda Now! | Continuum
Anaconda自体をアップグレードするコマンドはわかりませんでした。

python - How can I rename conda environment? - Stack Overflow
condaの環境名を変更する方法はないようです。

次の関連記事:linuxBean14.04(151)LibreOfficeマクロ開発環境の構築:その2

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ