「MacOSでAnaconda3を用いてEMAN2仮想環境を構築する」の版間の差分

提供: Eospedia
移動: 案内検索
(EMAN2仮想環境作成)
 
行1: 行1:
 
== この記事について ==
 
== この記事について ==
* Macの場合で、Anaconda3をPython環境として使ってEMAN2をソースからビルドする方法について書き残しておく。
+
* Macの場合で、Anaconda3をPython環境として使ってEMAN2をソースからビルドし、EMAN2の仮想環境を構築する方法について書き残しておく。
 
* 公式手順は https://blake.bcm.edu/emanwiki/EMAN2/COMPILE_EMAN2_ANACONDA だが、ちょっと違う方法でやってみた。
 
* 公式手順は https://blake.bcm.edu/emanwiki/EMAN2/COMPILE_EMAN2_ANACONDA だが、ちょっと違う方法でやってみた。
 
* 2019年8月23日実施。
 
* 2019年8月23日実施。

2019年8月23日 (金) 09:58時点における最新版

この記事について

  • Macの場合で、Anaconda3をPython環境として使ってEMAN2をソースからビルドし、EMAN2の仮想環境を構築する方法について書き残しておく。
  • 公式手順は https://blake.bcm.edu/emanwiki/EMAN2/COMPILE_EMAN2_ANACONDA だが、ちょっと違う方法でやってみた。
  • 2019年8月23日実施。


実行環境

  • Mac mini (Late 2012)
  • macOS Mojave 10.14.6
  • XCodeとかCommandLineToolとかはインストール済み


手順

Anaconda3のインストール

インストーラのダウンロードとインストールの実施

https://www.anaconda.com/distribution で Python 3.7 version の 64-Bit Graphical Installer (653 MB) をダウンロード。

Anaconda3-2019.07-MacOSX-x86_64.pkg をダブルクリックしてインストールを実施した。

※ 公式手順ではAnaconda2 (Python2をベースとするAnaconda)だし、EMAN2はPython2依存だが、今回はAnaconda3でPython2仮想環境を用意し、それを使ってビルドする。

EMAN2仮想環境の作成

EMAN2仮想環境作成

Anaconda3インストール後に新規ターミナルを立ち上げて、

> conda create -n eman-env cmake=3.9 python=2.7 -c defaults

上記の様にconda createで python=2.7 とすれば、Python3ベースのAnaconda3でもPython2環境を構築できる。

EMAN2仮想環境へ必要物をインストール

> conda install -n eman-env eman-deps=14 -c cryoem -c defaults -c conda-forge

EMAN2仮想環境への切り替え

> conda activate eman-env

公式( https://blake.bcm.edu/emanwiki/EMAN2/COMPILE_EMAN2_ANACONDA )では "source activate eman-env" となっているが、それは古い情報で、新しいAnacondaでは conda activate コマンドで切り替えられる。

EMAN2のビルドとインストール

ソースコードの用意

Githubからソースを取ってくる。~/SoftwaresにEMAN2を置くことにする。

> cd ~/Softwares
> git clone https://github.com/cryoem/eman2.git

# 2019年8月現在の最新の安定版をチェックアウト
> git checkout v2.3

ビルド

> cd ~/Softwares/eman2
> mkdir build && cd build
> cmake ..
> make -j

makeでものっそい警告吐かれるけど気にしない。

インストール

> make install

~/anaconda3/envs/eman-env/bin/ にEMAN2のプログラムがインストールされる。

テスト

> make test
Running tests...
Test project /Users/kttn/Softwares/eman2/build
    Start 1: imports
1/5 Test #1: imports ..........................   Passed    3.95 sec
    Start 2: test-EMAN2DIR
2/5 Test #2: test-EMAN2DIR ....................   Passed    2.35 sec
    Start 3: nose-tests
3/5 Test #3: nose-tests .......................   Passed   16.21 sec
    Start 4: progs
4/5 Test #4: progs ............................   Passed  145.37 sec
    Start 5: py-compile
5/5 Test #5: py-compile .......................   Passed    5.19 sec

100% tests passed, 0 tests failed out of 5

Total Test time (real) = 173.17 sec

e2display.pyをsambaでマウントしたファイルシステム内のディレクトリで実行したら "IOError: [Errno 45] Operation not supported"が頻発してムカついたが(動作はする)、ローカルのディレクトリでは特に問題が起きなかったので、まぁ良いということにする。 あと、e2boxer.pyの挙動が微妙に不安定で嫌な感じだが、とりあえずこれで使ってみることにする。


おまけ

Anaconda3では好きなだけ仮想環境を作ることができる。上記で作ったのは eman-env という名前のEMAN2用仮想環境である。

EMAN2がPython2に依存しているので、EMAN2を使うときには嫌々Python2を使うしかない。普段使い用としては、Python3の仮想環境を作成して使いましょう。

今回はAnaconda3を入れたので、基本となる仮想環境 "base" はPython3環境である。baseをコピーして、普段使い用のPython3環境を作ることにする。

> conda create --name py373 --clone base

これで py373という名前のPython3環境を作れた。

仮想環境の切り替えは conda activate で行う。

# eman-envへの切り替え
(base)
[18:45:25 ~/workmac01/tmp/eman2-test]
> conda activate eman-env

INFO: eman-deps activation script is making the following environmental changes:
+++ LDFLAGS=
+++ LDFLAGS=
+++ CXXFLAGS=
+++ set +x

# pythonをインタラクティブモードで実行
(eman-env)
[18:45:34 ~/workmac01/tmp/eman2-test]
> python
Python 2.7.14 |Anaconda, Inc.| (default, Mar 27 2018, 12:28:59)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

# py373への切り替え
(eman-env)
[18:46:23 ~/workmac01/tmp/eman2-test]
> conda activate py373

# pythonをインタラクティブモードで実行
(py373)
[18:46:31 ~/workmac01/tmp/eman2-test]
> python
Python 3.7.3 (default, Mar 27 2019, 16:54:48)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

現在の仮想環境は、コマンドプロンプトの上側とかに (eman-env) とか (base) とかって感じで表示される。もちろんシェル単位で切り替えられるので、かたやEMAN2用の仮想環境を使いつつ、かたやフツーのPython3仮想環境を使うみたいなことができる。素晴らしかー。