Skip to main content

A modern Python environment manager with a clean GUI. Manage virtual environments, modules, and Python versions effortlessly — powered by uv

Project description

UV python

PYVY — モジュールと環境マネージャー(PyQt6 + uv)

パッチノート GUI で Python 仮想環境とモジュール(パッケージ)を管理できるデスクトップアプリです。内部的に uv を呼び出して、環境作成・パッケージの一覧/インストール/アンインストール/アップデートなどを行います。PyQt6 製で、非同期実行(QThread)により UI をブロックしません。

想定用途: 複数の仮想環境や依存パッケージを GUI から直感的に扱いたい個人/チーム向け。


主な機能

  • 環境管理

    • 既存環境の自動検出(<プロジェクト>/.venvenvs/ 配下)
    • 新規環境の作成(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 の結果をテーブル表示します。
  • 検索: 上部の検索欄にキーワードを入力するとクライアント側フィルタで絞り込みます。
  • インストール: 下部入力にパッケージ名(例: requestspydantic==2.9.2)→「インストール」。
  • バージョン管理: 行の「バージョン管理」から特定バージョンを指定して再インストールします。
  • 削除: 行の「削除」でアンインストールします(確認あり)。
  • 一括更新: 「一括モジュール更新」→ アウトデート検出 → 更新実行(確認あり)。

仕組み(実装メモ)

  • 非同期実行: CommandThread(QThread)uv コマンドを別スレッドで実行し、シグナルで結果を返します。
  • UI のビジー制御: 実行中はボタン/入力/UI 全体を無効化し、完了後に復帰します。
  • 環境検出: discover_environments().venvenvs/*/pyvenv.cfg を列挙・重複排除。
  • Python 実行ファイル: OS 別に bin/python(Unix)/Scripts/python.exe(Windows)を検索。
  • モジュール一覧/更新: uv pip list --format json / --outdated を利用して JSON を解析しテーブル更新。

トラブルシュート

  • uv が見つからない

    • PATH に uv が通っていない可能性があります。ターミナルで uv --version を実行して確認してください。
  • 環境が検出されない/空

    • .venv または envs/ 配下に pyvenv.cfg が存在するか確認してください。
  • Windows でアンチウイルスにブロックされる

    • uv の実行を許可してください。権限に注意してください。
  • 権限エラー

    • システム領域や管理者権限が必要なディレクトリでの操作を避け、ユーザーディレクトリ配下で実行してください。

開発ガイド

  • 依存: PyQt6(UI)、uv(外部 CLI)

  • コード構成:

    • ModuleGUIQWidget): UI/状態/イベント束ね
    • CommandThreadQThread): コマンド実行と結果通知
  • 今後の拡張候補(ロードマップ例)

    • インストールログ/履歴ダイアグラムの表示
    • 依存関係ビュー(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

pyvy-0.1.2.1.tar.gz (276.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyvy-0.1.2.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

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

Hashes for pyvy-0.1.2.1.tar.gz
Algorithm Hash digest
SHA256 e010e57ff1ad51a7631c029766bba1b09ce7a642e21afe7ef1c4edba6bd9db1f
MD5 4580e9dd22a234a2e57612076f96309e
BLAKE2b-256 e7a4b0baa11588aef0f9025bff0d9b0c669c654330e42a12fd4828e26388c4f8

See more details on using hashes here.

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

Hashes for pyvy-0.1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4288dd3978cc2b18bd2567454724d26b69731d331747dd126a0de0e1f4c22a88
MD5 109e265dd2396791922d1542157805c2
BLAKE2b-256 1292c2c97446680184b3d3067612828b0e745d23f5e9e3eb6cd9241d29c2bfc0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page