在 Python 项目开发中,依赖管理一直是一个重要话题。最近,我将个人项目 Terminal-LLM 从传统的 requirements.txt 迁移到了更现代的 Poetry 解决方案。这篇文章将分享迁移经验,并介绍这个正在开发中的项目。
Terminal-LLM 项目介绍
Terminal-LLM 是一个优雅的终端型 LLM 客户端,旨在为开发者提供一个简单而强大的命令行 AI 助手工具。项目目前正处于积极开发阶段,主要特点包括:
- 🚀 简洁的命令行界面
- 🔗 支持多种 LLM 模型接入
- 💬 自然的对话交互体验
- 🛠 强大的开发辅助功能
为什么选择 Poetry?
在项目早期,我使用传统的 requirements.txt 管理依赖。随着项目发展,我遇到了以下挑战:
- 版本锁定:
requirements.txt需要手动维护确切版本号 - 环境隔离:虚拟环境管理不够优雅
- 依赖解析:无法自动处理依赖冲突
- 开发依赖:难以区分运行时和开发时依赖
Poetry 提供了这些问题的完整解决方案:
- 使用
pyproject.toml声明式配置 - 自动生成
poetry.lock锁定依赖版本 - 内置虚拟环境管理
- 支持区分开发依赖
- 更好的依赖解析器
迁移过程
1. 安装 Poetry
curl -sSL https://install.python-poetry.org | python3 -
2. 初始化项目
poetry init
这个命令会引导我创建 pyproject.toml 文件,包含项目元数据和依赖信息。
3. 配置项目信息
[tool.poetry]
name = "terminal-llm"
version = "0.1.0"
description = "An elegant terminal-based LLM client"
authors = ["Yiyabo! <wxxpublic@outlook.com>"]
readme = "README.md"
packages = [{include = "src"}]
4. 迁移依赖
将原有的 requirements.txt 中的依赖转换为 Poetry 格式:
[tool.poetry.dependencies]
python = "^3.8"
aiohttp = "^3.8.0"
python-dotenv = "^1.0.0"
rich = "^13.0.0"
[tool.poetry.group.dev.dependencies]
pytest = "^7.4.0"
pytest-asyncio = "^0.21.0"
5. 安装依赖
poetry install
迁移后的优势
-
更清晰的依赖管理
- 依赖关系一目了然
- 版本约束更灵活
- 自动处理依赖冲突
-
更好的开发体验
- 虚拟环境自动管理
- 依赖安装更快速
- 构建和发布更便捷
-
更规范的项目结构
- 符合现代 Python 项目标准
- 便于团队协作
- 更容易维护
Terminal-LLM 项目展望
目前,Terminal-LLM 正在积极开发中,计划添加更多特性:
- 支持更多 LLM 模型
- 增强的代码补全功能
- 更智能的上下文管理
- 插件系统支持
我欢迎社区贡献,无论是提交 PR、报告问题还是提供建议,都将帮助项目变得更好。
结论
迁移到 Poetry 是现代 Python 项目的明智选择。它不仅简化了依赖管理,还提供了更好的开发体验。对于 Terminal-LLM 这样的开源项目来说,这是提升项目质量和可维护性的重要一步。
如果您对 Terminal-LLM 项目感兴趣,欢迎访问我的 GitHub 仓库,一起参与开发!