conda
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
スター履歴
データ取得日時: 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