conda

バージョン管理Pythonデータサイエンスパッケージ管理多言語対応

GitHub概要

conda/conda

A system-level, binary package and environment manager running on all major operating systems and platforms.

スター6,997
ウォッチ186
フォーク1,856
作成日:2012年10月15日
言語:Python
ライセンス:Other

トピックス

condapackage-managementpython

スター履歴

conda/conda Star History
データ取得日時: 2025/7/20 02:54

言語バージョン管理ツール

conda

概要

condaは、Python環境とパッケージを管理するためのオープンソースのパッケージ管理システム・環境管理システムです。データサイエンス分野に特化しており、Python以外にもR、Scala、Java、C/C++などの言語もサポートします。複雑な依存関係を持つ科学計算ライブラリや機械学習フレームワークを簡単に管理でき、クロスプラットフォームでの再現可能な環境構築が可能です。

詳細

主な特徴

  • 多言語対応: Python、R、Scala、Java、C/C++など幅広い言語をサポート
  • バイナリパッケージ: プリコンパイル済みパッケージで高速インストール
  • 複雑な依存関係解決: SAT-solverベースの高度な依存関係管理
  • クロスプラットフォーム: Windows、macOS、Linux対応
  • 仮想環境: 独立した環境でのパッケージ管理
  • チャンネルシステム: conda-forge、biocondaなど専門チャンネル
  • データサイエンス特化: NumPy、SciPy、Pandas、TensorFlowなど標準対応

アーキテクチャ

condaは環境ごとに独立したディレクトリ構造を作成し、パッケージの依存関係をメタデータで管理します。libsolverによる強力な依存関係解決により、バージョン競合を最小化します。

パッケージソース

  • defaults: Anaconda Inc.が提供する公式チャンネル
  • conda-forge: コミュニティ主導の最大規模チャンネル
  • bioconda: バイオインフォマティクス専用チャンネル
  • pytorch: PyTorch公式チャンネル
  • nvidia: NVIDIA CUDA関連パッケージ

メリット・デメリット

メリット

  • 簡単な科学計算環境: NumPy、SciPy、TensorFlowが一発インストール
  • バイナリパッケージ: コンパイル不要で高速インストール
  • 強力な依存関係解決: 複雑な依存関係を自動解決
  • 再現可能性: environment.yamlによる完全な環境再現
  • クロスプラットフォーム: 同一設定でWindows、Mac、Linux対応
  • データサイエンス生態系: Jupyter、matplotlib、seaborn等が統合済み
  • 企業サポート: Anaconda Inc.による商用サポート

デメリット

  • 重量: フルインストールは数GBの容量
  • パッケージサイズ: 個々のパッケージサイズが大きい
  • 解決時間: 複雑な依存関係解決に時間がかかる場合がある
  • 学習コストの高さ: pip/venvより多機能だが複雑
  • 更新の遅延: 最新パッケージバージョンの反映が遅れる場合がある
  • ライセンス: Anaconda商用利用には制限あり

参考ページ

書き方の例

インストール

# Miniconda(推奨・軽量版)のインストール
# Linux/macOS
curl -L https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o miniconda.sh
bash miniconda.sh

# macOS(Homebrewでも可能)
brew install --cask miniconda

# Windows(Chocolateyでも可能)
choco install miniconda3

# インストール確認
conda --version
conda info

基本的な環境管理

# 新しい環境の作成
conda create -n myproject python=3.11

# 環境の有効化
conda activate myproject

# 現在の環境確認
conda info --envs

# 環境一覧表示
conda env list

# 環境の無効化
conda deactivate

パッケージ管理

# パッケージのインストール
conda install numpy pandas matplotlib

# 特定チャンネルからインストール
conda install -c conda-forge scikit-learn
conda install -c pytorch pytorch torchvision

# 特定バージョンの指定
conda install python=3.11.5 numpy=1.24.3

# 複数パッケージの同時インストール
conda install "numpy>=1.20" "pandas>=1.5" jupyter

# インストール済みパッケージ確認
conda list

# パッケージの更新
conda update numpy
conda update --all

データサイエンス環境の構築

# データサイエンス用環境の作成
conda create -n datascience python=3.11 \
  numpy pandas matplotlib seaborn jupyter \
  scikit-learn scipy statsmodels

# 機械学習特化環境
conda create -n ml-env python=3.11
conda activate ml-env
conda install -c conda-forge \
  numpy pandas matplotlib scikit-learn \
  tensorflow keras pytorch torchvision

# 地理空間データ分析環境
conda create -n geo-env python=3.11
conda activate geo-env
conda install -c conda-forge \
  geopandas folium rasterio shapely fiona

# バイオインフォマティクス環境
conda create -n bio-env python=3.11
conda activate bio-env
conda install -c bioconda biopython blast samtools

環境の保存と復元

# 環境をYAMLファイルに保存
conda env export > environment.yaml

# 最小限の構成で保存(手動インストールのみ)
conda env export --from-history > environment.yaml

# カスタムYAMLファイル作成例
cat << EOF > environment.yaml
name: myproject
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.11
  - numpy
  - pandas
  - matplotlib
  - jupyter
  - pip
  - pip:
    - requests
    - beautifulsoup4
EOF

# YAMLファイルから環境を作成
conda env create -f environment.yaml

# 既存環境を更新
conda env update -f environment.yaml

conda-forgeの活用

# conda-forgeをデフォルトチャンネルに設定
conda config --add channels conda-forge
conda config --set channel_priority strict

# conda-forgeからMinifosrgeを使用(推奨)
curl -L https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -o miniforge.sh
bash miniforge.sh

# conda-forgeパッケージの検索
conda search -c conda-forge scipy

# conda-forgeから専用パッケージをインストール
conda install -c conda-forge \
  xarray dask intake holoviz

大規模プロジェクトでの管理

# マルチ環境プロジェクト設定
mkdir myproject && cd myproject

# 開発環境
conda create -n myproject-dev python=3.11 \
  pytest black flake8 mypy jupyter

# 本番環境
conda create -n myproject-prod python=3.11 \
  --file requirements.txt

# テスト環境
conda create -n myproject-test python=3.11 \
  pytest coverage pytest-cov

# 環境の複製
conda create -n myproject-backup --clone myproject-dev

# 環境の削除
conda env remove -n myproject-test

CI/CD環境での使用

# GitHub Actions例
name: Conda Tests
on: [push, pull_request]

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: [3.9, 3.10, 3.11]
    
    steps:
    - uses: actions/checkout@v4
    - uses: conda-incubator/setup-miniconda@v2
      with:
        auto-update-conda: true
        python-version: ${{ matrix.python-version }}
        environment-file: environment.yaml
        activate-environment: test-env
    
    - name: Install dependencies
      shell: bash -l {0}
      run: |
        conda info
        conda list
    
    - name: Run tests
      shell: bash -l {0}
      run: |
        pytest tests/

パフォーマンス最適化

# 高速パッケージ解決にmambaを使用
conda install -c conda-forge mamba

# mambaでパッケージインストール(高速)
mamba install numpy pandas matplotlib

# 並列ダウンロード設定
conda config --set remote_max_retries 3
conda config --set remote_connect_timeout_secs 30

# キャッシュ管理
conda clean --all
conda clean --packages --tarballs

# チャンネル優先度の最適化
conda config --show channels
conda config --set channel_priority strict