いろいろシミュレーションなどするときの環境を構築するにあたって、システム環境が壊れてしまったりしてととてもめんどくさいをすることが多いです。そこで、通常使う環境をシステム環境に影響のないやり方で構築する方法をまとめてみました。
今回構築する環境
- ubuntu (本当はxubuntu17.04を使っています。18.04になったらubuntuに戻るかどうかをもう一度考え直すかも)
- python 3.5以上の最新版 (numpy で行列式演算子の
@
を利用したいので、3.6以上が望ましい)- numpy, scipy, matplotlib, jupyter notebook
- spyder 数値計算やシミュレーション用の環境を構築するには、jupyer notebookよりもこちらのほうが便利かも
- R (なんだかんだでこっちも使います)
- rstudio, tidyverse
- latex (論文執筆用、システムに同梱されるtexliveで困らない)
- julia (数値計算の高速化用 こちらも最新版)
- pycharm (IDE)
基本的には、texlive を除いて、最新環境が欲しいものは $HOME
以下に構築することにします。具体的には、以下のようなディレクトリ構成にします。
$HOME
.local/julia
.local/pycharm
.pyenv/(anacondaでpython、R、juliaを管理)
pythonの環境構築
データサイエンティストを目指す人のpython環境構築 2016を参照しつつ構築します。
ubuntuの基本パッケージ
あとあと gcc
や cmake
、 git
は必要となるの先に導入してしまいます。
sudo apt install build-essential cmake git
pyenv
まずは、pyenvを導入します。
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
anaconda
anacondaは最新版をインストールします。pyenv上のグローバル環境に設定します。pythonを使い分けることは考えていないので、 $PYENV_ROOT/versions/anaconda3-4.4.0/bin
にパスを通すことはしません。
pyenv install -l # インストール可能な環境を確認
pyenv install anaconda3-4.4.0
pyenv rehash
pyenv global anaconda3-4.4.0
conda update conda
conda update --all
ここで、spyder, numpy, scipy, matplotlibはインストールされるはずです。ただし、spyder はQT5のライブラリの関係でfcitxで日本語入力ができないので、後述の対処を行ってください。
conda のレポジトリに登録されていないパッケージのインストールは pip
を利用します。ここで、conda の環境が破壊されると後々めんどくさいことになるので、 pip --user
として $HOME/.local/lib
以下にpythonのモジュールをインストールします。
pip install --user simpy
pip install --user actdiag blockdiag
pip install --user blockdiagcontrib-cisco blockdiagcontrib-class blockdiagcontrib-eps blockdiagcontrib-excelhogan
pip install --user blockdiagcontrib-excelshape blockdiagcontrib-labeledbox blockdiagcontrib-math blockdiagcontrib-nationalflags
pip install --user blockdiagcontrib-octicons blockdiagcontrib-qb blockdiagcontrib-square blockdiagcontrib-tex
pip install --user funcparserlib Markdown markdown-blockdiag nwdiag seqdiag simpy
pip install --user sphinxcontrib-actdiag sphinxcontrib-blockdiag sphinxcontrib-nwdiag sphinxcontrib-seqdiag
pip install --user sphinxjp.themecore sphinxjp.themes.basicstrap sphinxjp.themes.bizstyle
pip install --user sphinxjp.themes.dotted sphinxjp.themes.gopher sphinxjp.themes.htmlslide hinxjp.themes.impressjs
pip install --user sphinxjp.themes.revealjs sphinxjp.themes.s6 sphinxjp.themes.sphinxjp webcolors
Texlive
Texliveはubuntuに付属のものを使います。フルインストールでも困ることはありませんが、日本語・英語環境のみが欲しいだけだけですので、TeX wikiのtexlive導入 を参考にします。
sudo apt install texlive-lang-japanese
sudo apt install texlive-luatex texlive-latex-recommended texlive-latex-extra
sudo apt fonts-lmodern texlive-xetex latex-cjk-common texlive-fonts-extra
R
R
はubuntu添付のものではなく、condaで管理ことにします。ついでに、jupyter用のカーネルもインストールします。
conda install -c r r-essentials rstudio r-tidyverse r-irkernel
ただし、RstudioはQT5のライブラリの関係でfcitxで日本語入力ができないので、後述の対処を行ってください。
QT5アプリケーションへのfcitxからの日本語入力
qt5ライブラリは、conda環境のものを使用することになります。ubuntuのqt5には libfcitxplatforminputcontextplugin.so
がデフォルトでインストールされますが、condaには添付されていないので、自前で用意する必要があります。
Ubuntu 16.04LTSでのQtCreator日本語入力 を参考にビルドします。
ビルドするための必要なライブラリをインストールします。
$ sudo apt-get install ecm extra-cmake-modules fcitx-libs-dev libxkbcommon-dev libxkbcommon-x11-dev
fcitx用のplatform input context pluginビルドします。
git clone git@github.com:fcitx/fcitx-qt5.git
cd ${git clone先のディレクトリ}
git checkout -b Release1.1.0 1.1.0
mkdir build
cd ./build
PATH=$PYENV_ROOT/versions/anaconda3-4.4.0/bin:$PATH cmake .. -DCMAKE_PREFIX_PATH=$PYENV_ROOT/versions/anaconda3-4.4.0
make
ubuntu 16.04だと make
に失敗することがあるようです。とりあえず、 libfcitxplatforminputcontextplugin.so
がほしいだけなので、make fcitxplatforminputcontextplugin
でも大丈夫です。
cp ./platforminputcontext/libfcitxplatforminputcontextplugin.so $PYENV_ROOT/versions/anaconda3-4.4.0/plugins/platforminputcontexts/
終わったら、シェアードオブジェクトをcondaのプラグインディレクトリにコピーします。
Julia
Juliaは公式ホームページから最新版をダウンロードしてインストールします。
wget https://julialang-s3.julialang.org/bin/linux/x64/0.6/julia-0.6.0-linux-x86_64.tar.gz
tar zxvf julia-0.6.0-linux-x86_64.tar.gz
mv julia-{なにかの文字列} $HOME/.local
ln -s $HOME/.local/julia-{なにかの文字列} $HOME/.local/julia
echo 'export PATH="$HOME/.local/julia/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
juliaは絶賛開発中なので、後々バージョンアップすることを考えて、シンボリックリンクを張ったうえでパスを通しておきます。
Pkg.add("IJulia")
Pkg.add("DataFrames")
Pkg.add("RDatasets")
Pkg.add("Plots")
Pkg.add("PyPlot")
Pkg.add("GR")
Pkg.add("Gadfly")
Pkg.add("DifferentialEquations")
Pkg.add("ODE")
Pkg.update()
Pkg.build()
juliaに導入するパッケージはREPLからインストールします。
pycharm
pycharmは公式ホームページから最新版をダウンロードしてインストールします。
$ wget https://download.jetbrains.com/python/pycharm-community-{バージョン}.tar.gz
$ tar zxvf pycharm-community-2017.2.3.tar.gz
$ mv pycharm-{なにかの文字列} $HOME/.local
$ ln -s $HOME/.local/pycharm-{なにかの文字列} $HOME/.local/pycharm
$ echo 'export PATH="$HOME/.local/pycharm/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
このままだと日本語入力できないので、ubuntuのfcitxの設定からFcitx XIM Frontendを有効にします。