Open12

asdf + uv + Rye + Ruffを使った最新のPython環境構築

Kento HanedaKento Haneda

MacOSのバージョン

$ system_profiler SPSoftwareDataType

Software:
    System Software Overview:
      System Version: macOS 13.6.5 (22G621)
      Kernel Version: Darwin 22.6.0

asdfでPythonをインストールする

$ asdf install python 3.12.2
$ asdf global python 3.12.2
$ python --version

Python 3.12.2
Kento HanedaKento Haneda

仮想環境の作成

uv venv

.venvが作らる

ls -la

Permissions Size User  Group Date Modified Name
drwxr-xr-x     - kento staff 29 Mar 02:03  .
drwxr-xr-x     - kento staff 29 Mar 02:03  ..
drwxr-xr-x     - kento staff 29 Mar 02:03  .venv
Kento HanedaKento Haneda

仮想環境のactivate

source .venv/bin/activate
$ which python

.../.venv/bin/python
Kento HanedaKento Haneda
  • uvはcargo for python を目指しているようだがまだ不完全な部分があるよう
  • ryeも試す

Install rye

何も読まず

pip install rye

してコケた

Kento HanedaKento Haneda

気を取り直してInstall Rye

https://github.com/astral-sh/rye

curl -sSf https://rye-up.com/get | bash

いい感じ

いくつか選択肢に答える

This script will automatically download and install rye (latest) for you.
######################################################################## 100.0%
Welcome to Rye!

This installer will install rye to /Users/kento/.rye
This path can be changed by exporting the RYE_HOME environment variable.

Details:
  Rye Version: 0.31.0
  Platform: macos (aarch64)

✔ Continue? · yes
✔ Select the preferred package installer · uv (fast, recommended)
✔ What should running `python` or `python3` do when you are not inside a Rye managed project? · Run a Python installed and managed by Rye
✔ Which version of Python should be used as default toolchain? · cpython@3.12
Installed binary to /Users/kento/.rye/shims/rye
Detected outdated rye internals. Refreshing
Bootstrapping rye internals
Found a compatible Python version: cpython@3.11.3
Updated self-python installation at /Users/kento/.rye/self

The rye directory /Users/kento/.rye/shims was not detected on PATH.
It is highly recommended that you add it.
✔ Should the installer add Rye to PATH via .profile? · yes
Added to PATH.
note: for this to take effect you will need to restart your shell or run this manually:

    source "$HOME/.rye/env"

To make it work with zsh, you might need to add this to your .zprofile:

    source "$HOME/.rye/env"

For more information read https://rye-up.com/guide/installation/

All done!
Kento HanedaKento Haneda

zshの設定

source "$HOME/.rye/env"

を.zshrcに追加

$ which rye

~/.rye/shims/rye
Kento HanedaKento Haneda

プロジェクト初期化

rye init .

いけた。

uvと同じオーナーが作っているRuffも後で試したい。

Kento HanedaKento Haneda

syncせえということらしい

rye sync -f

これで、lockファイルが生成される。

requirements-dev.lock
requirements.lock

もう一度activate

先程の.venvを削除したのちにもう一度 rye sync する

source .venv/bin/activate   
Kento HanedaKento Haneda
rye init --script foo

で実行形式のプロジェクトを作るということらしいので、やりなおし

pyproject.tomlとスクリプトを引っ越してきただけだが、

rye sync

が必要でそのあと

rye run foo

ができる

Kento HanedaKento Haneda

Ruffを入れる

rye add --dev ruff

いけた

$ ruff check
$ ruff format

formatは差分に対してのみ作用する?

Kento HanedaKento Haneda

現状はryeのバックエンドにuvが使えるようだが、将来的にこれらが統合されるという噂もある。
そこまで深追いせず。