実習用の環境作り。Ubuntu 20.04で確認。(Ubuntu 18 LTS でも同様だと思われる。)
pyenv を使ってPython環境を構築。py37_SSと名付ける。
ここを参照。
.bash_profile
に
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# alias activate="source $PYENV_ROOT/versions/anaconda3-5.2.0/bin/activate"
$ pyenv install anaconda3-5.2.0
Downloading Anaconda3-5.2.0-Linux-x86_64.sh...
-> https://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh
Installing Anaconda3-5.2.0-Linux-x86_64...
Installed Anaconda3-5.2.0-Linux-x86_64 to /home/nemo_kohei/.pyenv/versions/anaconda3-5.2.0
$ pyenv rehash
$ pyenv global anaconda3-5.2.0
$ echo 'alias activate="source $PYENV_ROOT/versions/anaconda3-5.2.0/bin/activate"' >> ~/.bash_profile
$ source .bash_profile
$ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
$ conda update conda
Solving environment: done
## Package Plan ##
environment location: /home/nemo_kohei/.pyenv/versions/anaconda3-5.2.0
added / updated specs:
- conda
The following packages will be downloaded:
...
pysocks-1.7.1 | py37_1 27 KB
...
The following packages will be UPDATED:
...
pyopenssl: 18.0.0-py36_0 --> 19.0.0-py37_0
pysocks: 1.6.8-py36_0 --> 1.7.1-py37_1
python: 3.6.5-hc3d631a_2 --> 3.7.0-hc3d631a_0
...
Proceed ([y]/n)? y
...
python-3.7.0 | 31.7 MB | ############################################################################################################################ | 100%
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
$ python
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
[GCC 7.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Summer student用のPython環境、ということでpy37_SS
という名前をつけることにする。
$ conda create -n py37_SS python=3.7 anaconda
...
zstd pkgs/main/linux-64::zstd-1.4.5-h9ceee32_0
Proceed ([y]/n)? y
Downloading and Extracting Packages
_libgcc_mutex-0.1 | 3 KB | ############################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate py37_SS
#
# To deactivate an active environment, use
#
# $ conda deactivate
ここまで来たら一旦シェルを閉じて新しいタブを開く。
$ source activate py37_SS
(py37_SS) username:~$
ちなみに、普通のPython環境に戻る場合は、
(py37_SS) $ conda deactivate
とすれば良い。
また、Python環境の名前がわからなくなった場合は、以下のコマンドが有用。
$ conda info --envs
# conda environments:
#
base * /home/[user_name]/.pyenv/versions/anaconda3-5.2.0
cvxpy /home/[user_name]/.pyenv/versions/anaconda3-5.2.0/envs/cvxpy
py37 /home/[user_name]/.pyenv/versions/anaconda3-5.2.0/envs/py37
py37_hvs /home/[user_name]/.pyenv/versions/anaconda3-5.2.0/envs/py37_hvs
py37_SS /home/[user_name]/.pyenv/versions/anaconda3-5.2.0/envs/py37_SS
vega /home/[user_name]/.pyenv/versions/anaconda3-5.2.0/envs/vega
上記のようにすれば、自分が過去に作った環境をリスト化できる。
$ source activate py37_SS
とすれば、再び今構築した環境py37_SS
に戻れる。
py37_SS に必要なパッケージを入れる。
さて、ここまでの段階では、py37_SS
はpython 3.7 のanaconda の一般的なモジュールしか入っていない。ここからは、自分がこの新しいプロジェクトに必要なモジュールを一つずつ追加していく。
なにか新しいプロジェクトを始めるときに、そのプロジェクトの内容に応じて新しい環境を作ることで、今までのPython環境を壊すリスクを避けられる。
mpi4py
備忘録: ISM install (2) mpi4py (2020.12.1より転用)
(py37_SS)$ which conda
*** 何か出力されればOK(要確認)***
(py37_SS)$ conda install -c anaconda mpi4py
*** 何か聞かれたら "y" と打てば OK ***
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.5.4
latest version: 4.9.2
...
*** 以下略 ***
問題なくimportできていることを確認する。
(py37_SS) $ cd
(py37_SS) $ python -c 'import mpi4py'
*** 特にエラーがなければ OK. python -c '何か内容' は、「何か内容」をpythonで行わせる。
*** つまり、上記の場合でエラーがなければ、import mpi4pyを、問題なく実行できると確認できる。
*** 二重チェックとして、下記のように確認することも推奨。
(py37_SS) $ python
Python 3.7.9 (default, Aug 31 2020, 12:42:55)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mpi4py
>>>
*** この場合は、「Python 3.7.9」と表示されるので、Python 3.7系であることも確認できる。
*** また、import mpi4py をエラーなく実行できていることが視覚的にわかる。
emcee
実習でベイズ推定まで行くかはわかりませんが、念のため入れておきます。
emcee
は天文学者が開発したべイズ推定を行うパッケージですが、もちろん天文以外のデータにも利用できます。初学者の利用しやすさから、少し古いv2.2.1を利用します。
(py37_SS) $ cd
(py37_SS) $ mkdir my_libs_3
(py37_SS) $ cd my_libs_3
*** my_libs_3 は、必要に応じて自分の好きなディレクトリ名にしてOK.
*** これは筆者の環境構築の歴史的背景による命名です(Python 2系を利用していた時期があったため)。
(py37_SS) $ which wget
/usr/bin/wget
*** wget があることがわかる。なければ別途入れる。
*** Ubuntuの場合、
*** $ wget
*** とすれば、「xxxxを打ち込めば wget をインストールできるよ」と教えてくれる。
(py37_SS) $ wget https://codeload.github.com/dfm/emcee/zip/v2.2.1
*** ダウンロードが始まる。
--2020-12-01 14:21:03-- https://codeload.github.com/dfm/emcee/zip/v2.2.1
Resolving codeload.github.com (codeload.github.com)... 52.68.31.213
Connecting to codeload.github.com (codeload.github.com)|52.68.31.213|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘v2.2.1’
v2.2.1 [ <=> ] 774.83K --.-KB/s in 0.09s
2020-12-01 14:21:04 (8.20 MB/s) - ‘v2.2.1’ saved [793424]
(py37_SS) $ pwd
/home/[user_name]/my_libs_3
*** この時点で my_libs_3 にいます。
(py37_SS) $ ls -l
total 780
-rw-rw-r-- 1 793424 Dec 1 14:21 v2.2.1
*** emcee packageがv2.2.1 というファイルに固めてあるので、これを解凍します。
(py37_SS) $ unzip v2.2.1
Archive: v2.2.1
67c8f79928716a0c65e1e59f96fb845600ea9c2a
creating: emcee-2.2.1/
*** 略
(py37_SS) $ ls -l
total 784
drwxrwxr-x 6 4096 Jul 15 2016 emcee-2.2.1
-rw-rw-r-- 1 793424 Dec 1 14:21 v2.2.1
(py37_SS) $ cd emcee-2.2.1/
emcee-2.2.1 $ ls -l
total 48
-rw-rw-r-- 1 1264 Jul 15 2016 AUTHORS.rst
drwxrwxr-x 6 4096 Jul 15 2016 docs
drwxrwxr-x 3 4096 Jul 15 2016 document
drwxrwxr-x 2 4096 Jul 15 2016 emcee
drwxrwxr-x 2 4096 Jul 15 2016 examples
-rw-rw-r-- 1 2211 Jul 15 2016 HISTORY.rst
-rw-rw-r-- 1 1109 Jul 15 2016 LICENSE
-rw-rw-r-- 1 208 Jul 15 2016 Makefile
-rw-rw-r-- 1 51 Jul 15 2016 MANIFEST.in
-rw-rw-r-- 1 2035 Jul 15 2016 README.rst
-rw-rw-r-- 1 6 Jul 15 2016 requirements.txt
-rwxr-xr-x 1 1649 Jul 15 2016 setup.py
(py37_SS) $ python setup.py install
running install
*** 略
先ほどと同様に、インストールを確認。
(py37_SS) $ cd
(py37_SS) $ python
Python 3.7.9 (default, Aug 31 2020, 12:42:55)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import emcee
>>> import mpi4py
>>>
*** エラーがなければOK
corner.py
corner.pyは、ベイズ推定のコーナープロットを作成するためのツール。
(手元の記録によると)GitHubからcorner.pyをインストールすることが困難な模様。そこで pip で簡便にインストールする。
(py37_SS) $ pip install corner
(py37_SS) $ python
Python 3.7.9 (default, Aug 31 2020, 12:42:55)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import corner
>>>
astropy
(py37_SS)$ conda install -c anaconda astropy
*** 何か聞かれたら "y" と打てば OK ***
...
*** 以下略 ***
PyGaia
(py37_SS)$ cd
(py37_SS)$ cd my_libs_3
(py37_SS)$ git clone https://github.com/agabrown/PyGaia.git
(py37_SS)$ cd PyGaia
(py37_SS)$ python setup.py install
constrNMPy
(py37_SS)$ python -c 'import scipy'
(py37_SS)$ python -c 'import pandas'
エラーがなければ続行。エラーならscipy, pandas をインストール。
(py37_SS)$ cd
(py37_SS)$ cd my_libs_3/
(py37_SS)$ git clone https://github.com/alexblaessle/constrNMPy.git
(py37_SS)$ cd constrNMPy
(py37_SS)$ python setup.py build
(py37_SS)$ python setup.py install
(py37_SS)$ cd
(py37_SS)$ python -c 'import constrNMPy'
# エラーがなければOK
AGAMA
https://github.com/GalacticDynamics-Oxford/Agama
AGAMAはGalactic dynamicsに有用なパッケージ。内部はC++で記述されているが、ユーザーはPythonでコードを書けば良い。Pythonの扱いやすさと、C++の計算速度の両方の長所を備えている。今回の実習で一番重要なパッケージと言える。
.bash_profile
AGAMA のために必要なpathを通しておく。
*** ~/.bash_profile に以下を加筆。
*** 「my_libs_3」でない場所にインストールする場合はpathを適宜変更する。
LIBRARY_PATH=$HOME/my_libs_3/Agama/lib/:$LIBRARY_PATH
export PYTHONPATH=$HOME/my_libs_3/Agama/:$PYTHONPATH
install AGAMA
(py37_SS) $ cd ~/my_libs_3
(py37_SS) $ git clone https://github.com/GalacticDynamics-Oxford/Agama.git
(py37_SS) $ cd Agama
(py37_SS) $ python setup.py build
*** 途中で「xxxxがないけどインストールする?」と聞かれたら"y"と答えておく。
*** 数十分かかる。
(py37_SS) $ python setup.py install
*** 途中で「xxxxがないけどインストールする?」と聞かれたら"y"と答えておく。
*** 1時間かかる。
Processing dependencies for agama==1.0
Finished processing dependencies for agama==1.0
(py37_SS) $ cd
(py37_SS) $ python
Python 3.7.9 (default, Aug 31 2020, 12:42:55)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import agama
>>>
*** 無事インストールできた模様。