A modern Python environment manager with a clean GUI. Manage virtual environments, modules, and Python versions effortlessly — powered by uv
Project description
PYVY — モジュールと環境マネージャー(PyQt6 + uv)
パッチノート
GUI で Python 仮想環境とモジュール(パッケージ)を管理できるデスクトップアプリです。内部的に uv を呼び出して、環境作成・パッケージの一覧/インストール/アンインストール/アップデートなどを行います。PyQt6 製で、非同期実行(QThread)により UI をブロックしません。
想定用途: 複数の仮想環境や依存パッケージを GUI から直感的に扱いたい個人/チーム向け。
主な機能
-
環境管理
- 既存環境の自動検出(
<プロジェクト>/.venvとenvs/配下) - 新規環境の作成(
uv venv) - 管理対象内の環境削除
- 選択中環境の Python バージョン表示(
pyvenv.cfgから)
- 既存環境の自動検出(
-
モジュール(パッケージ)管理
- インストール済みモジュール一覧(
uv pip list --format json) - キーワード検索フィルタ
- 指定モジュールの インストール/削除/バージョン固定(
==指定) - アウトデート検出 → 一括アップデート(確認ダイアログ付き)
- インストール済みモジュール一覧(
-
UI/操作性
- 行選択テーブル、交互行色、ステータスバー
- 実行中は操作を抑止して安全化(ビジー表示)
- エラー/確認/情報ダイアログ
動作要件
- Python 3.10+(3.11/3.12 推奨)
- uv CLI が PATH から実行可能であること
- OS: Windows
本アプリは uv を通じて仮想環境・パッケージ操作を行います。pip の代替として uv を利用します。
セットアップ
# リポジトリ取得
git clone https://github.com/jyup-escape/PYVY
cd PYVY
# 依存(アプリ自身の GUI 実行に必要)
# ※ アプリ内部で uv を呼ぶので uv は別途インストールしてください
pip install PyQt6
# uv のインストール(未導入の場合)
# 例)macOS/Homebrew
brew install uv
# 例)pipx
pipx install uv
実行方法
python main.py
本 README のコード例では
ModuleGUIを直接__main__から起動します。
使い方
1) 環境管理
- 検出: プロジェクト直下の
.venv、およびenvs/ディレクトリ配下の仮想環境(pyvenv.cfgが存在するもの)を自動検出します。 - 新規作成: 「新規環境作成」を押下し、環境名を入力します。
- 削除:
envs/配下にある環境のみ削除できます(安全のため管理外は不可)。 - Python バージョン管理: ダイアログで指定バージョンを入力 →
uv python install <version>を実行します。
2) モジュール管理
- 一覧: 「環境」を選択すると、
uv pip list --format jsonの結果をテーブル表示します。 - 検索: 上部の検索欄にキーワードを入力するとクライアント側フィルタで絞り込みます。
- インストール: 下部入力にパッケージ名(例:
requests、pydantic==2.9.2)→「インストール」。 - バージョン管理: 行の「バージョン管理」から特定バージョンを指定して再インストールします。
- 削除: 行の「削除」でアンインストールします(確認あり)。
- 一括更新: 「一括モジュール更新」→ アウトデート検出 → 更新実行(確認あり)。
仕組み(実装メモ)
- 非同期実行:
CommandThread(QThread)がuvコマンドを別スレッドで実行し、シグナルで結果を返します。 - UI のビジー制御: 実行中はボタン/入力/UI 全体を無効化し、完了後に復帰します。
- 環境検出:
discover_environments()で.venvとenvs/*/pyvenv.cfgを列挙・重複排除。 - Python 実行ファイル: OS 別に
bin/python(Unix)/Scripts/python.exe(Windows)を検索。 - モジュール一覧/更新:
uv pip list --format json/--outdatedを利用して JSON を解析しテーブル更新。
トラブルシュート
-
uv が見つからない
- PATH に
uvが通っていない可能性があります。ターミナルでuv --versionを実行して確認してください。
- PATH に
-
環境が検出されない/空
.venvまたはenvs/配下にpyvenv.cfgが存在するか確認してください。
-
Windows でアンチウイルスにブロックされる
uvの実行を許可してください。権限に注意してください。
-
権限エラー
- システム領域や管理者権限が必要なディレクトリでの操作を避け、ユーザーディレクトリ配下で実行してください。
開発ガイド
-
依存: PyQt6(UI)、
uv(外部 CLI) -
コード構成:
ModuleGUI(QWidget): UI/状態/イベント束ねCommandThread(QThread): コマンド実行と結果通知
-
今後の拡張候補(ロードマップ例)
- インストールログ/履歴ダイアグラムの表示
- 依存関係ビュー(tree)
- 設定のエクスポート/インポート(JSON)
- ダークテーマ/テーマ切替
- エラーメッセージの改善(詳細ログ保存)
協力してくれる方向け
現在困っているもの
- Macでのテスト
- Linuxでのテスト
- pythonの互換性テスト
ライセンス
- リポジトリ同梱の
LICENSEを参照してください。
謝辞
- 本アプリは Astral の uv に大きく依存しています。素晴らしいツールの提供に感謝します。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyvy-0.1.2.1.tar.gz.
File metadata
- Download URL: pyvy-0.1.2.1.tar.gz
- Upload date:
- Size: 276.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e010e57ff1ad51a7631c029766bba1b09ce7a642e21afe7ef1c4edba6bd9db1f
|
|
| MD5 |
4580e9dd22a234a2e57612076f96309e
|
|
| BLAKE2b-256 |
e7a4b0baa11588aef0f9025bff0d9b0c669c654330e42a12fd4828e26388c4f8
|
File details
Details for the file pyvy-0.1.2.1-py3-none-any.whl.
File metadata
- Download URL: pyvy-0.1.2.1-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4288dd3978cc2b18bd2567454724d26b69731d331747dd126a0de0e1f4c22a88
|
|
| MD5 |
109e265dd2396791922d1542157805c2
|
|
| BLAKE2b-256 |
1292c2c97446680184b3d3067612828b0e745d23f5e9e3eb6cd9241d29c2bfc0
|