MotionPNGTuberをuv管理下に置きたい
ろてじんさんの「MotionPNGTuber」が面白かったのでuv管理にしたかった
- PyTorch CUDA版の指定
extra-index-url = [
"https://download.pytorch.org/whl/cu117",
]
index-strategy = "unsafe-best-match"
設定 目的
extra-index-url PyTorch公式のCUDA版wheelを取得するためのインデックス
index-strategy = "unsafe-best-match" PyPIと追加インデックスの両方から最適なバージョンを選択(デフォルトは安全優先で PyPI を優先)
背景: PyTorch の CUDA 版は PyPI に公開されておらず、公式の別URLからのみ入手可能。
- mmcv-full のプリビルドwheel指定
[tool.uv.sources]
mmcv-full = { url = "https://download.openmmlab.com/mmcv/dist/cu117/torch1.13.0/mmcv_full-1.7.0-cp310-cp310-win_amd64.whl" }
目的: mmcv-full はソースからビルドすると数十分かかり、ビルド環境も複雑。OpenMMLab が提供するプリビルド wheel を直接指定。
背景: CUDA/PyTorch バージョンの組み合わせごとに異なる wheel が必要。
- opencv-python-headless の無効化
override-dependencies = [
"opencv-python-headless>=4.5.4.58 ; sys_platform == 'never'",
]
目的: anime-face-detector が opencv-python-headless を依存として持つが、GUI機能(cv2.namedWindow() 等)が必要なため、GUI版の opencv-python を使いたい。
仕組み: sys_platform == 'never' は絶対に満たされない条件なので、opencv-python-headless は実質的に無効化される。
- chumpy のビルド依存関係注入
[tool.uv.extra-build-dependencies]
chumpy = ["wheel", "pip", "setuptools"]
目的: chumpy は古いパッケージで、build-system.requires に必要なビルドツールを宣言していない。
仕組み: uvがビルド分離環境を作成する際に、追加で wheel, pip, setuptools を注入。
注意: この機能は実験的(警告が表示される)。
- NumPy 1.x への制限
"numpy>=1.24.0,<2.0.0",
目的: mmcv-full, mmpose, mmdet, xtcocotools などが NumPy 1.x でコンパイルされており、NumPy 2.x とはバイナリ互換性がない。
- setuptools バージョン制限
"setuptools>=60.0.0,<70.0.0",
目的: 古いパッケージとの互換性を維持。setuptools 70.x 以降はレガシービルドに対する挙動が変わっている。
- pip を依存関係として明示
"pip>=24.0",
目的: 一部の古いパッケージ(chumpy など)が setup.py 内で import pip している場合に対応。
背景: 通常 pip を依存関係として指定することは珍しいが、このプロジェクトでは必要。
anime-face-detector自体が若干古めのライブラリのため、それで使っている各ライブラリも古く、mm系のものもuv管理を前提にしていないものなので躓いていた
マージされた!done