とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

Minicondaを使って複数のPython環境を共存する

Pythonでアプリケーションを動かしたり、統計とか分析とかでPythonを使ったりすることが多くなりました。 最近はStable Diffusionの環境を構築するときもMinicondaが役立っています。

Pythonベースでアプリを動かしたりコードを動かすときに問題となるのが、Pythonやモジュールのバージョンの組み合わせです。 色々なバージョンのPythonを一つの環境に複数インストールして使うのはなかなか大変です。 うっかりシステムで利用するPythonモジュールが別のバージョンに差し替わると、システムの動作に影響が出る可能性がありますし、 重要なモジュールを誤操作で削除してしまうと最悪システムが起動しなくなることにもなりかねません。

Linuxディストリビューションいよってはシステム用のPythonとユーザーが使うPythonを分けているものもありますが、基本的にはPythonを使う場合はPython仮想環境を作って使うというのがある意味お約束になりました。

ただPythonの仮想環境を使う方法は色々ありすぎる上に変化も激しいので、いざ使うときになるとどの方法を使えば良いのか分からなくなります。

そんなあなたにおすすめなのがCondaです。特にMinicondaは手軽に導入できるのでおすすめです。

conda.io

Minicondaのインストール

次のページの下にあるように、使用中のOSに対応したインストール手順に従ってMinicondaをインストールします。

docs.conda.io

Windows, Linux, macOSの導入方法がそれぞれ書かれています。

インストール後は、最後に書かれているようにシェルに合わせて実行します。これでMinicondaが簡単に使えるようになります。

例えばLinuxにインストールする場合は、まずシェルを確認して...

$ echo $SHELL
/bin/bash

次のようにインストール&設定をします。

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash

一旦ログアウトして再ログインすると、次のように表示が変わります。 これはbase環境に入っている状態です。

$ logout
$ ssh cloud-user@172.16.214.192
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Oct 17 14:58:38 2023 from ::ffff:172.16.0.101
(base) [cloud-user@miniconda-test ~]$ 

あとは、例えば次のように指定して仮想環境の作成と切り替えができ、

(base) [cloud-user@miniconda-test ~]$ conda create --name snakes python=3.10
(base) [cloud-user@miniconda-test ~]$ conda activate snakes

conda deactivateで元の環境環境に戻ります。

(snakes) [cloud-user@miniconda-test ~]$ conda deactivate
(base) [cloud-user@miniconda-test ~]$ 

さらにconda deactivateを実行するとCondaによるPython仮想環境から抜けて、元の環境に戻ります。 base環境にもう一度入りたいときはログインし直すか、conda activate baseを実行します。

(base) [cloud-user@miniconda-test ~]$ conda deactivate
[cloud-user@miniconda-test ~]$ 

要らなくなった環境は、次のコマンドでサクッと削除できます。 なにか作業中にうまく動かなくなったときは仮想環境の作り替えだけで済むので簡単です。

conda remove -n ENVNAME --all

環境構築の自動化も可能

次のようにYAML形式で設定を書いて環境構築を自動化することもできます。 テスト環境を作ってアプリを実行するといったCI/CDツールなどでの利用もできそうですね。

name: ansible
channels:
  - defaults
dependencies:
  - python=3.10.12
  - pip=23.2.1
  - pip:
    - ansible-core==2.15.3
    - ansible-lint
    - jinja2 >= 3.0.0
    - PyYAML >= 5.1
    - cryptography
    - packaging
    - importlib_resources >= 5.0, < 5.1
    - resolvelib >= 0.5.3, < 1.1.0

先程のような設定ファイルを使ってPython仮想環境が作れます。この例は、Ansible Core環境をCondaで作る例です。

conda env create -f ansible-environment.yaml
conda activate ansible

Pythonのバージョンやモジュールのバージョンをちょこちょこ変えて動作検証みたいなことにも役立ちそうですね。

まとめ

CondaはPythonの仮想環境を簡単に作る事が可能です。 使い方は簡単ですしPythonを使う場合、バージョンや環境の使い分けがしやすく便利なので使ってみてください。