はじめに
Conda環境,すぐ壊れるし嫌いって人多いのではないでしょうか.
しかし,誰しも一回はConda環境を使わなければならない時が訪れると思います.
私はインターン先でそのようなことがありました.苦労しながらうまく付き合う方法を見つけたため,共有できればと思います.
この記事でわかること
快適なConda環境を使うことができる
開発環境
MacOS 13.2.1
Conda環境のインストール
快適なConda環境を使うにあたり,Condaのインストールについて解説します.すでにインストールされている方は飛ばしてください.
公式ページ (https://www.anaconda.com/download) から環境にあったものをダウンロードし,インストールしてください.
今回はMacOS M1チップですので,64-Bit (M1) Graphical Installerをダウンロードします.
インストーラを開き,インストールします.
ソフトウェアにAnaconda-NavigatorがあればOKです.
ターミナルを開くと
(base) ~ %
のように(base)
が先頭についていると,Condaが有効となっている状態となります.
常に有効にしたい場合は
% env | grep conda
...
CONDA_PYTHON_EXE=/Users/seast/anaconda3/bin/python
...
% ~/anaconda3/bin/conda init シェル名
無効にしたい場合は
% conda config --set auto_activate_base false
とします.詳しくはmacOSでCondaコマンドを使うをご参照ください.
これでConda環境のインストールは完了です.
Conda環境と付き合うために
本題のConda環境が壊れにくい方法について解説します.
結論をお伝えしますと,
- base環境に色々インストールしない
-
conda install
を絶対に使わない
この二つが大事です.二つについて詳しく解説します.
base環境に色々インストールしない
Anaconda-Navigatorを見るとわかるのですが,base環境にはいろいろな基本のライブラリがインストールされており,ここにライブラリを増やしていくのは壊れる元でありあまりお勧めしません.
おすすめは仮想環境を作り、そこにインストールしていくことです.
仮想環境とはbase上に作ることができる,文字通り仮想的な環境であり,プロジェクトごとに仮想環境を作ることをお勧めします.
作り方は簡単で
(base) ~ % conda create -n 好きな環境名
または,pythonのバージョンを指定して
(base) ~ % conda create -n 好きな環境名 python=好きなバージョン
で仮想環境を作ります.
好きな環境名
:py39,好きなバージョン
:3.9として進めます.
(base) ~ % conda env list
# conda environments:
#
base * /Users/seast/anaconda3
py39 /Users/seast/anaconda3/envs/py39
(base) ~ % conda activate py39
(py39) ~ %
(py39) ~ % conda deactivate
(base) ~ %
以上のようにして,仮想環境の有効化,無効化を行います.
conda installを絶対に使わない
仮想環境を作成すれば,そこに必要なライブラリをインストールしてコードを動かしていくと思うのですが,その際に大切なことはconda install
を絶対に使わないことです.
ライブラリをインストールする際はpip install
を使いましょう.
conda環境には標準でpip
が入っているので,それを利用しましょう.
環境破壊の原因はconda installでよく起きるConflictであり、pipでは起きることはほとんどありません。
ライブラリのインストールの際は,仮想環境上で
(py39) ~ % pip install scipy
全てpip
でインストールすれば環境は壊れません.
また,pip
のいいところはrequirementsを一気にインストールしたり,書き出してくれるところも便利です.
# インストール
(py39) ~ % pip install -r requirements.txt
# 書き出し
(py39) ~ % pip freeze > requirements.txt
まとめ
Conda環境とうまく付き合うためには
- 仮想環境を使う
-
pip install
を使う
ことを守りましょう.
もし疑問やコメントがあれば、下のコメント欄でお知らせください!
参考