Open3

【pythonパッケージマネージャー】uvの使い方/仮想環境構築などについて📝

まさぴょん🐱まさぴょん🐱

pythonパッケージマネージャー: uvとは?

https://github.com/astral-sh/uv

https://docs.astral.sh/uv/

https://zenn.dev/tabayashi/articles/52389e0d6c353a

uvのセットアップ📝

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Homebrew
brew install uv

Pythonのインストール

uv python install 3.12

uv python list

プロジェクトの作成

uv init

パッケージ追加 (依存関係にも追加する)

uv add パッケージ名
まさぴょん🐱まさぴょん🐱

uv venvを使った仮想環境構築について📝

uv venvは、Pythonのパッケージ管理ツールであるuvを使用して仮想環境(virtual environment)を作成するコマンドです。
仮想環境は、プロジェクトごとに独立したPython環境を構築し、パッケージの依存関係を管理するために使われます。
これにより、違うプロジェクト間でパッケージのバージョン衝突を防ぎ、環境をクリーンに保つことができます。

uv venvの役割

  • 仮想環境の作成: uv venvを実行すると、指定したディレクトリ(デフォルトでは.venv)に仮想環境が作成されます。
    • この環境には、独立したPythonインタプリタとpipが含まれます。
  • 依存関係の隔離: 仮想環境内にインストールしたパッケージは、システム全体や他のプロジェクトに影響を与えません。
  • 高速なセットアップ: uvは高速なパッケージ管理ツールで、仮想環境の作成や依存関係の解決が非常に効率的です。

Pythonファイルの実行に必要か?

必須ではありませんが、強く推奨されます。

  • 必要でない場合:

    • シンプルなスクリプトで、システムにインストール済みのPythonと必要なパッケージがすでにグローバル環境にある場合、仮想環境なしでPythonファイルを実行できます。
    • 例: python script.pyで実行可能。
  • 仮想環境が推奨される理由:

    • 依存関係の管理: プロジェクトごとに違うバージョンのパッケージが必要な場合、仮想環境を使わないとバージョンの競合が発生する可能性があります。
    • 環境の再現性: 他の開発者や本番環境で同じ環境を再現しやすくなります。
    • システムの保護: グローバル環境にパッケージをインストールすると、システムのPython環境を壊すリスクがあります。
    • 開発のベストプラクティス: 仮想環境を使うのは、Python開発の標準的な手法です。

uv venvの基本的な使い方

  1. 仮想環境を作成:

    uv venv
    

    デフォルトで.venvディレクトリに仮想環境が作成されます。

  2. 仮想環境を有効化:

    • Linux/macOS:
      source .venv/bin/activate
      
    • Windows:
      .venv\Scripts\activate
      
  3. パッケージのインストール:

    uv pip install <パッケージ名>
    
  4. Pythonファイルの実行:
    仮想環境が有効化された状態で、通常通りpython script.pyを実行します。

  5. 仮想環境の終了:

    deactivate
    

結論

Pythonファイルを実行するだけであれば、仮想環境は必須ではありません。
ただし、依存関係の管理や環境の分離、再現性を確保するために、uv venvを使った仮想環境の利用が強く推奨されます。
特に、複数のプロジェクトを扱う場合や、他の開発者と協業する場合は、仮想環境を使うのがベストプラクティスです。

まさぴょん🐱まさぴょん🐱

uv pip install xxxxx と uv add xxxxx の違いは?

uv pip install pillowuv add pillow は、Pythonのパッケージ管理ツール uv を使ったコマンドですが、目的と動作に明確な違いがあります。以下にその違いを簡潔に説明します。

1. uv pip install pillow

  • 目的: 指定したパッケージ(この場合は pillow)を現在のPython環境にインストールします。
  • 動作:
    • pillow を直接インストールする。
    • 依存関係も自動的に解決・インストールされる。
    • プロジェクトの依存関係を管理するファイル(例: pyproject.tomlrequirements.txt)には何も記録されない。
    • 現在の仮想環境やグローバル環境にインストールされる(環境に応じて)。
  • 使用ケース:
    • 一時的にパッケージをインストールしたい場合。
    • プロジェクトの依存関係ファイルに記録せずに、すぐに使いたい場合。
  • :
    uv pip install pillow
    
    pillow が環境にインストールされるが、pyproject.toml には追加されない。

2. uv add pillow

  • 目的: パッケージ(pillow)をプロジェクトの依存関係として追加し、依存関係管理ファイル(通常は pyproject.toml)に記録します。
  • 動作:
    • pillow を現在の仮想環境にインストールする。
    • 依存関係を pyproject.toml(または他の設定ファイル)に記録する。
    • プロジェクトの依存関係を明示的に管理し、再現性を確保する。
    • 依存関係のバージョンや制約も適切に扱う。
  • 使用ケース:
    • プロジェクトに長期的に必要なパッケージを追加する場合。
    • 依存関係をバージョン管理し、他の開発者や環境で同じ依存関係を再現したい場合。
  • :
    uv add pillow
    
    pillow が環境にインストールされ、pyproject.toml に以下のようなエントリが追加される:
    [project.dependencies]
    pillow = "^10.0.0"  # バージョンは例
    

主な違い

項目 uv pip install pillow uv add pillow
依存関係ファイルへの記録 記録しない pyproject.toml に記録
目的 一時的なインストール プロジェクトの依存関係管理
再現性 低い(手動で再インストールが必要) 高い(依存関係ファイルで管理)
使用シーン テストや一時利用 プロジェクト開発

補足

  • uv は高速でモダンなPythonパッケージ管理ツールであり、pip の代替として動作しますが、uv add は依存関係管理に特化した役立つ機能を提供します。
  • uv add pillow は、uv pip install pillow の動作を含む(インストールも行う)が、依存関係ファイルへの記録が追加される点が大きな違いです。
  • プロジェクト開発では、uv add を使うことで依存関係の管理が容易になり、チーム開発やCI/CDでの再現性が向上します。

結論

  • 一時的に pillow を使いたい: uv pip install pillow
  • プロジェクトに pillow を依存関係として追加したい: uv add pillow