Skip to main content

Command Palette

Search for a command to run...

Rye: 另一個 Python 的套件管理工具

Updated
1 min read
Z

Machine Learning Engineer, interest in MLOps, Recommendation System, Deep Learning, Large Language Model, Natural Language Processing, Distributed System, Kubernetes, Databases, Data Engineering and all the Engineering Best Practices.

Rye 是 Armin Ronacher (Flask 的作者)在 2023 年 5 月發佈的一套 Python 套件管理工具。市面上已經有非常多 Python 套件管理工具,例如:Pipenv, Poetry。Armin Ronacher 本人並沒有,似乎也抗拒將 rey 與現存的工具做比較,然而他還是寫了個 issue(https://github.com/mitsuhiko/rye/discussions/6) 分享他為什麼想要開發 rye。

我自己試用 rye 一小段時間,並且應用在幾個專案上,發現 rye 有幾個讓我非常滿意的特性:

  • rye 可以幫你安裝 python

  • rye 的 resolver 表現似乎比 pipenv 好

但我也有遇到一些 rye 的 bug,譬如:

但由於 rye 現在還是個初期且活躍中的專案,因此這個 bug 似乎也在最近的 release 中被修正了。

Install

rye 是基於 rust 開發的軟體,所以需要使用 cargo 安裝,而這對我來說是件好事,cargo 比 brew 好用 100 萬倍。

在最新的 release 中使用者甚至連 cargo 都不會碰到,只需要:

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

接著在要使用 rye 的專案中,可以用以下的指令來指定這個專案要使用的 python 版本

$ rye init
$ rye pin 3.10 # or 3.11 / 3.9 / 3.8

接著在每次要安裝新的 package 的時候使用以下指令(假設我們要安裝 flask)

$ rye add "flask>=2.0"
$ rye sync

rye add 會把 dependency 加到 pyproject.toml 中,而 rye sync 則會真正的將需要的 python/package 下載下來並且安裝,然後產生對應的 lock file。

最後在專案中我們也可以使用類似 pipenv shell 的指令來開啟一個虛擬環境

$ rye shell

Install Python

事實上我目前對於 rye 是否能夠一統 python package management 這點還沒有很確定的想法。主要的原因是現存的其他 solution(pipenv, poetry)這段時間也陸續有在進步,而且這些 solution 是有經過許多 production-ready 的測試。

**但我最喜歡 rye 的部分其實是他可以幫助我們安裝 python。**在沒有 rye 的年代安裝 python 的方法其實是很詭異的,我們可能需要從 python 官網上下載 binary 自己 link,或是下載 tar 檔自己 build,又或者是在 mac 上可能可以用 brew 安裝。但不管是哪個作法開發者的體驗都很糟,而且我們也常常會把開發上需要用的 python 跟系統自帶的 python 搞得一塌糊塗。

用 rye 安裝以及移除 python 的指令如下:

rye toolchain fetch cpython@3.8.5
rye toolchain remove cpython@3.8.5

我們也可以用 list 指令來看到 rye 幫我們裝了什麼

rye toolchain list
rye toolchain list --include-downloadable

No more brew and no more system Python!

Ref

More from this blog

Hashnode Pro

這三天因為覺得自己會比較頻繁的寫作的關係,因此開始了 Hashnode Pro 的試用。這篇文章想紀錄試用 hashnode pro 的一些心得。 Pro (可能)會有更多曝光 這點是我從 hashnode 的 Feed 上觀察到的,似乎我的 personalized feed 上出現不少 hashnode pro 訂閱的作者。但也可能是倒因為果,因為有訂閱 pro 的人也可能比較認真的在寫文章。 title generation 在 Title 的旁邊有自動生成更好的標題的功能,這點我覺得滿...

May 29, 20231 min read

Continuously Descend

9 posts