PyCharmに追加されたuvでパッケージ管理
PyCharmに追加されたuvでパッケージ管理 PyCharmはバージョン2024.3.2から、既存のVirtualenvやPipenv、Poetryに加えて、新たに「uv」を使ったパッケージ管理が可能になりました。この […]
Filter by Category
PyCharmに追加されたuvでパッケージ管理 PyCharmはバージョン2024.3.2から、既存のVirtualenvやPipenv、Poetryに加えて、新たに「uv」を使ったパッケージ管理が可能になりました。この […]
Pythonで動画のメタデータを取得する 動画ファイルの管理をしていると、ファイル名や拡張子、フレームレート、音声の有無、ビットレートなどの情報をまとめて確認したい場面があります。本記事では、Pythonの ffmpeg […]
2024年に最も読まれた記事ランキング あけましておめでとうございます2025年もどうぞよろしくお願いします ファントムは2025年も皆様のお役に立てるよう精進しますより一層のご支援、お引立てを賜りますようお願い申し上げ […]
git stashでコミット前の作業を退避する 開発の途中で別のブランチに切り替えたり、緊急の修正が必要になることも珍しくありません。そんなときに現在の変更はコミットせずに一時的に保存しつつ、変更前のクリーンな状態に戻し […]
AWS CLIでファイルをS3へアップロード クラウドストレージへのファイルアップロードは、現代のシステム開発において欠かせない作業の一つです。特にAmazon S3はその高い信頼性と豊富な機能により、多くのプロジェクト […]
Pythonでファイル・ディレクトリを削除する 日付形式のディレクトリを管理していると古いデータを定期的に整理する必要が出てきます。特に画像ファイルなどの日々大量に生成されるデータを扱うシステムでは、ストレージの圧迫を防 […]
GitHub Actionsで Lambdaにデプロイ失敗した原因を調査 GitHub ActionsでLambdaへデプロイ中に発生したエラーを調査し、適切なポリシーの追加と deploy.ymlへのコマンド追加で解消 […]
GitHub ActionsでAWS Lambdaに自動デプロイ DevOpsの実践において、CI / CD(継続的インテグレーション / 継続的デリバリー)は欠かせない要素となっています。特に、クラウドサービスを活用し […]
Pythonのコマンドラインで特定の関数のみを指定して実行する AWS Lambdaではプログラム実行時に関数を指定しますが、pythonコマンドは通常、ファイル単位で指定するのでそのままでは実行できません。そのためロー […]
PythonとGhostscriptでPDFを軽量化 書類の添付などでブラウザからPDFをアップロードする際に数MB以下にしないとアップロードできないことがありますが、印刷用に作成したPDFや複数画像を一枚にまとめたPD […]
Alembicでheadが複数存在する時に発生するエラーの修正 FastAPI, PostgreSQL, Alembicで開発中のプロジェクトで、alembic upgrade headコマンドでマイグレーションを実行し […]
Jetson NanoのWiFiモジュール取り付け手順 Jetson NanoはNVIDIA社が提供するGPUを搭載した小型かつ低電力で動作する開発用ボードです。GPUを搭載しているのでCUDAを使って画像処理などの並列 […]
2024年度 長期インターンシップについて For English page 概要 2024年度 インターンシップの募集を開始します。 募集内容 ・インターンシップ 募集職種 ・機械学習エンジニア・ウェブアプリケーション […]
Announcement about Internships for 2024 日本語のページ Overview Recruitment for the 2024 internship program is now op […]
2023年に最も読まれた記事ランキング あけましておめでとうございます2024年もどうぞよろしくお願いします ファントムは2024年も皆様のお役に立てるよう精進しますより一層のご支援、お引立てを賜りますようお願い申し上げ […]
CodePipelineでCodeBuildのテストを自動化 CodeCommitで管理しているリポジトリをCodeBuildでテストする場合は通常、手動でテストを実行させる必要がありますが、CodePipelineを使 […]
AWS CodeCommitでプルリクエスト・マージ ソースコードの管理にはGitHubやGitLabを採用している方が多いかもしれませんが、AWSにもCodeCommitというサービスがあり、5人までは無料で5人以上で […]
FastAPI + SQLAlchemy + Alembic + SQLiteでマイグレーション FastAPIにはデータベースのマイグレーション機能はありませんが、Alembicというデータベースのマイグレーションツー […]
AWS LambdaとS3、SNSでファイルのアップロードを自動通知 AWS Lambdaは特定の条件を満たすときにサーバーレスでPython(他のプログラミング言語も)を実行できるサービスです。トリガーを検知したときや […]
GitHubリポジトリを別のOrganizationに移行 非公開用のOrganization(組織)で管理していたリポジトリの公開範囲をプライベートから公開に変更するにあたって、リポジトリを別のOrganization […]
PyCharmはバージョン2024.3.2から、既存のVirtualenvやPipenv、Poetryに加えて、新たに「uv」を使ったパッケージ管理が可能になりました。この記事では、uvによるパッケージ管理の特徴や使い方についてを解説します。
PC: MacBook Pro (14, 2021)
OS: macOS Monterey 12.6.7
PyCharm: 2024.3.2
Python: 3.12.0
uvは「Rustで書かれた非常に高速なPythonパッケージとプロジェクト管理ツールです。」と書かれています。今回、pipとの速度比較を行った結果、キャッシュを使用せずにインストールしたため「pipより10〜100倍速い」とはなりませんでしたが、6〜7倍ほどの速度差が出ました。
パッケージを追加する場合は、uv add
コマンドを使用します。以下のように複数のパッケージを同時にインストールすることも可能です。インストールしたパッケージはpyproject.tomlに追加されます。
uv add black flake8 isort setuptool
pyproject.toml
[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = [
"black>=25.1.0",
"flake8>=7.1.2",
"isort>=6.0.0",
"setuptools>=75.8.0",
]
追加したパッケージを除外する場合は、uv remove
コマンドを使用します。コマンドを実行するとpyproject.tomlから除外されます。
uv remove black
pyproject.toml
[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = [
"flake8>=7.1.2",
"isort>=6.0.0",
"setuptools>=75.8.0",
]
開発環境のみで使用するパッケージを追加する場合は、uv add --dev
コマンドを使用します。インストールしたパッケージはpyproject.tomlのdependency-groupsに追加されます。
uv add --dev black flake8 isort setuptools
pyproject.toml
[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []
[dependency-groups]
dev = [
"black>=25.1.0",
"flake8>=7.1.2",
"isort>=6.0.0",
"setuptools>=75.8.0",
]
開発環境に追加したパッケージを除外する場合は、uv remove --dev
コマンドを使用します。コマンドを実行するとpyproject.tomlから除外されます。
uv remove --dev black
pyproject.toml
[project]
name = "uv-demo"
version = "0.1.0"
description = "Add your description here"
requires-python = ">=3.12"
dependencies = []
[dependency-groups]
dev = [
"flake8>=7.1.2",
"isort>=6.0.0",
"setuptools>=75.8.0",
]
パッケージを同期する場合は、uc sync
コマンドを使用します。
全てのパッケージを同期
uv sync
本番環境でのみ使用するパッケージを同期(開発環境に追加したパッケージは含めない)
uv sync --no-dev
比較すると、uv add
が約0.44秒、pip install
が約3秒弱なので、単純な計算では 6〜7倍ほどの速度差がでました。
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。