Python 項目依賴管理提示詞(pyproject.toml 配置、uv 或 pip 鎖定版本、開發依賴分組、遷移舊 requirements.txt)

新建 Python 項目不知道依賴該怎麼管理,或者老項目只有一個混亂的 requirements.txt、換台機器就裝不起來時用:讓 AI 幫你整理成規範的 pyproject.toml,區分運行依賴和開發依賴,用 uv 或 pip-tools 鎖定版本,並給出團隊與 CI 的統一安裝方式。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
你是一名 Python 工程化方面的專家。請幫我規範項目的依賴管理。

- 項目類型:[項目類型](例:Web 服務、數據分析腳本集合、要發佈到 PyPI 的庫)
- Python 版本要求:[如 3.11 及以上]
- 現有依賴文件(requirements.txt、setup.py、Pipfile 等,原樣粘貼):
  [粘貼依賴文件]
- 想用的工具:[想用的工具](可選:uv/pip + pip-tools/Poetry/你推薦)
- 運行環境:[運行環境](例:本地 Windows 開發、Linux 容器部署、GitHub Actions)

請完成:
1. 工具選擇:如果我寫了「你推薦」,根據項目類型和團隊情況給出建議並說明理由;如果是庫項目和應用項目,說明兩者在版本約束上的不同做法(庫寫寬鬆的範圍,應用鎖定精確版本)。
2. 整理依賴:
   - 區分直接依賴和間接依賴:現有文件中哪些包是被其他包帶進來的,可以不直接聲明;
   - 區分運行依賴、開發依賴(測試、格式化、類型檢查)、可選依賴;
   - 指出可能已經不再使用、版本明顯過舊、或者存在已知兼容問題的包,標註「需確認」。
3. 生成 pyproject.toml:項目元數據、Python 版本要求、依賴聲明、開發依賴分組,以及常用工具(如測試、格式化、類型檢查)的配置段。
4. 鎖定版本:說明鎖文件的作用、生成和更新的命令,以及鎖文件要不要提交到倉庫。
5. 日常命令清單:創建虛擬環境、安裝全部依賴、新增依賴、新增開發依賴、升級某個包、運行腳本或測試、導出 requirements.txt(給只支持該格式的平台用)。
6. CI 與容器:在 CI 中按鎖文件安裝並緩存依賴;在 Dockerfile 中利用分層緩存只在依賴變化時重新安裝。
7. 遷移步驟:從現有文件遷移過來的步驟和驗證方法(遷移後跑一遍測試,對比關鍵包的版本)。

命令和配置字段以所選工具的當前官方文檔為準;拿不準的寫「請以官方文檔為準」。

高亮處換成你自己的內容:[項目類型]、[如 3.11 及以上]、[粘貼依賴文件]、[想用的工具]、[運行環境]

ChatGPT Plus 充值

已被複製 0 次

使用說明

怎麼填變量:[現有依賴文件] 原樣貼進來,AI 會幫你區分哪些是真正直接用到的包。用 pip freeze 導出的文件通常混着幾十個間接依賴,這正是需要整理的地方。[項目類型] 很重要:要發佈給別人用的庫不能鎖死精確版本,否則會和使用者的其他依賴衝突。

常見坑:

  • 只有一個 pip freeze 導出的文件,分不清哪些是自己真正需要的,升級時不敢動任何一個。在 pyproject.toml 裏只聲明直接依賴,精確版本交給鎖文件。
  • 測試、格式化工具和運行依賴混在一起,生產鏡像裏裝了一堆用不到的包。開發依賴單獨分組。
  • 應用項目的鎖文件不提交到倉庫,每個人、每次部署裝到的版本都可能不同。

追問技巧:追問「寫一個每月自動檢查依賴更新並發起合併請求的方案」,或「檢查這些依賴中有沒有已知安全漏洞,用什麼工具掃描」(可配合 1078 號提示詞)。

示例輸出

示例,僅供參考(Web 服務,使用 uv,節選)
toml
[project]
name = "order-service"
version = "0.1.0"
requires-python = ">=3.11"
dependencies = [
    "fastapi>=0.110",
    "sqlalchemy>=2.0",
    "httpx>=0.27",
]

[dependency-groups]
dev = ["pytest>=8", "ruff", "mypy"]
bash
uv sync                      # 按鎖文件創建虛擬環境並安裝(含開發依賴)
uv add redis                 # 新增運行依賴,同時更新 pyproject.toml 與 uv.lock
uv add --dev pytest-cov      # 新增開發依賴
uv run pytest                # 在項目環境中運行測試
uv export --format requirements-txt > requirements.txt   # 給只認 requirements.txt 的平台

整理結果:原文件中的 starlette、anyio、idna 是 fastapi、httpx 的間接依賴,不需要直接聲明;flask 在代碼中未找到導入,需確認 是否還在使用。

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~