0
0

More than 3 years have passed since last update.

実習用の環境設定など

Last updated at Posted at 2021-06-16

実習用の環境作り。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
>>>

*** 無事インストールできた模様。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0