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.1.tar.gz (276.0 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.1-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file pyvy-0.1.1.tar.gz.

File metadata

  • Download URL: pyvy-0.1.1.tar.gz
  • Upload date:
  • Size: 276.0 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.1.tar.gz
Algorithm Hash digest
SHA256 ca2859d59cc8e1c7607b699c1420017280d3ec41f111097e0b092a2211efb4f3
MD5 1eca17f8438280dcc427e169e4cfe33a
BLAKE2b-256 93feeb8e7823f77d059f664ce497c8e8a77b7aba8a4c4c8bd4126585cd0b702a

See more details on using hashes here.

File details

Details for the file pyvy-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyvy-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 13.4 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0c11940f1ecb5029a21caf924ae11a5f46b088a085bb50288f3fa8ac8d76e8fa
MD5 beb591af29fa6554fe7455413a7dcddf
BLAKE2b-256 bdeaac7452ee4ae4051c71ce85bb2b852eee6da12e7a45b7baa6129fdf3df641

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