uv sync 生產級指令:凍結依賴、排除開發套件一次搞懂

6 分鐘閱讀

琳 avatar

explain uv sync --frozen --no-dev --no-editable

Felo Search avatar
Felo Search

uv sync --frozen --no-dev --no-editable 是一個用於管理 Python 專案依賴的命令,這個命令的各個選項有其特定的功能,以下是對這些選項的詳細解釋:

命令選項解釋

總結

綜合來看,執行 uv sync --frozen --no-dev --no-editable 命令的目的是在不更新任何依賴版本的情況下,安裝專案的生產依賴,並且不包括開發依賴和可編輯安裝的包。這樣的做法有助於保持生產環境的穩定性和一致性,特別是在需要確保所有依賴版本不變的情況下。這對於部署和維護生產應用程式來說是非常重要的。

琳 avatar

I use uv sync --frozen --no-dev --no-editable to install my project. I want to install this project as tool too with the same env, What's the uv tool command to do this?

Felo Search avatar
Felo Search

根據您的問題,您想要在使用 uv sync --frozen --no-dev --no-editable 安裝專案後,也將該專案作為工具安裝到相同的環境中。以下是關於這個需求的詳細說明。

uv sync 命令解析

首先,讓我們了解您目前使用的命令:

安裝專案作為工具

要將您的專案作為工具安裝到相同的環境中,您可以使用 uv tool install 命令。以下是建議的步驟:

  1. 首先確保您的專案已經正確設置了 pyproject.toml 文件,包含了必要的元數據和入口點。

  2. 使用以下命令安裝您的專案作為工具:

uv tool install --system .

這裡的 . 表示當前目錄(您的專案目錄)。--system 選項表示將工具安裝到系統 Python 環境中,這樣可以確保與您之前使用 uv sync 命令安裝的環境保持一致3

在 Docker 中的應用

這是我自己在容器中處理 uv 的方法:
kohya-ss-gui.Dockerfile - jim60105/Containerfile-template

如果您是在 Docker 環境中工作,您可能需要確保工具的二進制目錄在 PATH 中。您可以通過以下方式實現:

ENV PATH="/root/.local/bin:$PATH"

或者,您可以使用 uv tool dir --bin 命令來確定工具二進制目錄的位置,然後將其添加到 PATH 中3

注意事項

  1. 確保您的 pyproject.toml 文件正確配置了 [project.scripts] 部分,以定義您的工具的入口點。

  2. 如果您需要在同一環境中安裝多個工具,可以重複使用 uv tool install 命令。

  3. 在 Docker 環境中,您可能需要考慮使用緩存來提高構建性能:

RUN --mount=type=cache,target=/root/.cache/uv \
    uv sync --frozen --no-dev --no-editable && \
    uv tool install --system .

這樣可以確保您的專案及其工具都安裝在相同的環境中,並且使用相同的依賴版本。

  1. Commands | uv

  2. Locking and syncing | uv - Astral Docs

  3. Using uv in Docker - Astral Docs ↩2 ↩3