版本管理
虚拟环境
#创建虚拟环境 修改了python sys.path 这个列表里 python的全局目录
# python 的导包机制:
# python 的装包路径:
python3 -m venv .venv # 建议起名venv 方便 ide识别
项目依赖分享
# 早期使用 pip freeze > requirements.txt 冻结版本号
# 有缺陷 分不清什么是 直接依赖 和 间接依赖 在创建的虚拟环境里卸载相应模块时 pip uninstall 对应模块 只能卸载对应无法卸载间接依赖
# 现代管理方案 使用 pyproject.toml文件 在他成为标准之前 不同开发工具有独立的配置文件 例如mypy.ini pytest.ini 等等 现在绝大多数都支持pyproject.toml
# pyproject.toml 替换requirements.txt dependencies 中声明直接依赖 删除依赖 pip install . 将当前项目打包 然后打包好 安装进环境 开发时有缺点 不利于改动源码 开发时推荐 pip install -e . 创建源码链接文件
pyproject.toml 格式简览
[project]
name = “proj”
version = “0.1.0”
dependencies = [
“Flask==3.1.1”
]
总结
venv 创建隔离环境 pyproject.toml 管理依赖 添加新依赖过程繁琐 需要对齐版本修改这个配置文件 虽然解决了 pip uninstall 孤儿依赖的问题 但是添加繁琐
社区解决方案
可以把下面的工具 理解成 对venv 和 pip 的高级封装
Conda
# 适合 ai单兵 合作使用很差
# 需要base python 环境 不遵守 pyproject规范 跨平台 工程化有点地狱
Poetry
UV
# 流程对比
# 手动流程 -》1.python – m venv .venv 创建环境 2.source .venv/bin/activate 激活环境 3.手动编辑配置文件 edit pyproject.toml 添加依赖声明 4.安装依赖 pip install -e .
# uv add flask 其实他也做了手动的流程不过他自动检查
# uv sync 拿到别人的项目 自动搭建环境 安装依赖
# uv还有各种命令 对比来说就是你可以注意力减少关注虚拟环境 直接 uv add uv sync uv run
# uv python list — 列出uv支持的python版本
# uv python install cpython3.12 — 安装某个python版本 (3.12)
# uv run -p 3.12 xxx.py — 使用特定版本python运行xxx.py
# uv run -p 3.12 python — 运行python交互界面
# uv run xxx.py — 使用系统python或当前工程的虚拟环境运行xxx.py
# uv init — 创建工程
# uv add pydantic_ai — 添加依赖 (pydantic_ai)
# uv tree — 打印依赖树
# uv remove pydantic_ai — 删除依赖
# uv build — 编译工程
PDM
其他
docker


评论(0)
暂无评论