python+ryeでプロジェクト作成の流れ

ryeを使ったpythonプロジェクト作成の流れ。
きっとすぐ忘れるのでメモを残す。

# 環境
windows11
rye 0.33.0


# プロジェクト作成の流れ
1. プロジェクトを作成する
1. pythonのバージョンを指定する
1. ryeの環境と設定を同期する
1. 使いたいライブラリを追加する

# やってみる
## 1. プロジェクト作成する
``` powershell
# プロジェクト作成
# このタイミングで'git init'もしてくれてるっぽい
PS D:\projects> rye init test_project
success: Initialized project in D:\projects\test_project
  Run `rye sync` to get started

# 出来上がったものを確認してみる
PS D:\projects> tree .\test_project\ /f
D:\PROJECTS\TEST_PROJECT
│  .python-version
│  README.md
│  .gitignore
│  pyproject.toml
│
└─src
    └─test_project
            __init__.py
```

## 2. pythonのバージョンを指定する
``` powershell
# 作成したプロジェクトに移動
PS D:\projects> cd .\test_project\
# 使用可能なpythonのバージョン確認
PS D:\projects\test_project> rye toolchain list --include-downloadable
cpython@3.12.3 (C:\Users\XXXXX\.rye\py\cpython@3.12.3\python.exe)
cpython@3.12.2 (downloadable)
cpython@3.12.1 (downloadable)
～以下略～

# プロジェクトで使用するpythonのバージョンを指定する
PS D:\projects\test_project> rye pin 3.12.3
pinned 3.12.3 in D:\projects\test_project\.python-version
```

## 3. ryeの環境と設定を同期する
``` powershell
# 同期
PS D:\projects\test_project> rye sync
Initializing new virtualenv in D:\projects\test_project\.venv
Python version: cpython@3.12.3
Generating production lockfile: D:\projects\test_project\requirements.lock
Generating dev lockfile: D:\projects\test_project\requirements-dev.lock
Installing dependencies
   Built file:///D:/projects/test_project                                        Built 1 editable in 2.75s
Installed 1 package in 172ms
 + test-project==0.1.0 (from file:///D:/projects/test_project)
Done!
```

## 4. 使いたいライブラリを追加する
``` powershell
# 今回はpandas入れてみる
PS D:\projects\test_project> rye add pandas
Added pandas>=2.2.2 as regular dependency
Reusing already existing virtualenv
Generating production lockfile: \\?\D:\projects\test_project\requirements.lock
Generating dev lockfile: \\?\D:\projects\test_project\requirements-dev.lock
Installing dependencies
   Built file:///D:/projects/test_project                                        Built 1 editable in 2.79s
Resolved 6 packages in 16ms
Downloaded 6 packages in 12.80s
Uninstalled 1 package in 1.14s
Installed 7 packages in 3m 03s
 + numpy==1.26.4
 + pandas==2.2.2
 + python-dateutil==2.9.0.post0
 + pytz==2024.1
 + six==1.16.0
 - test-project==0.1.0 (from file:///D:/projects/test_project)
 + test-project==0.1.0 (from file:///D:/projects/test_project)
 + tzdata==2024.1
Done!

# 開発用のライブラリも入れてみる => --devで開発用
PS D:\projects\test_project> rye add --dev pytest
Added pytest>=8.2.0 as dev dependency
Reusing already existing virtualenv
Generating production lockfile: \\?\D:\projects\test_project\requirements.lock
Generating dev lockfile: \\?\D:\projects\test_project\requirements-dev.lock
Installing dependencies
   Built file:///D:/projects/test_project                                        Built 1 editable in 3.19s
Resolved 3 packages in 6ms
Downloaded 3 packages in 823ms
Uninstalled 1 package in 120ms
Installed 6 packages in 2.69s
 + colorama==0.4.6
 + iniconfig==2.0.0
 + packaging==24.0
 + pluggy==1.5.0
 + pytest==8.2.0
 - test-project==0.1.0 (from file:///D:/projects/test_project)
 + test-project==0.1.0 (from file:///D:/projects/test_project)
Done!

# 同期を忘れずに。
PS D:\projects\test_project> rye sync
Reusing already existing virtualenv
Generating production lockfile: D:\projects\test_project\requirements.lock
Generating dev lockfile: D:\projects\test_project\requirements-dev.lock
Installing dependencies
Audited 12 packages in 11ms
Done!
```

# ryeのコマンド覚書
``` powershell
#プロジェクト作成
rye init 適当なプロジェクト名
# pythonのバージョン指定
rye pin 使いたいバージョン
# ライブラリ追加
rye add 使いたいライブラリ 
# 開発用ライブラリ追加
rye add --dev 使いたいライブラリ
# ライブラリ削除
rye remove 消したいライブラリ
# 同期 => initとかaddしたあとに実行しないと反映されなさそう
rye sync
# 実行
rye run python 実行したいファイル
# 追加したライブラリ表示
rye list 
```