为什么需要虚拟环境?
不同项目可能需要不同版本的依赖库。如果没有虚拟环境,所有项目共享系统Python环境,会导致版本冲突。
示例:项目A需要numpy 1.21,项目B需要numpy 1.24,没有隔离就会产生冲突。
隔离项目依赖的最佳实践
不同项目可能需要不同版本的依赖库。如果没有虚拟环境,所有项目共享系统Python环境,会导致版本冲突。
示例:项目A需要numpy 1.21,项目B需要numpy 1.24,没有隔离就会产生冲突。
| 特性 | venv | conda |
|---|---|---|
| 来源 | Python内置 | Anaconda/Miniconda |
| 管理范围 | 仅Python包 | Python + 系统依赖 |
| Python版本 | 固定 | 可切换不同版本 |
| GPU支持 | 需要手动配置 | 内置CUDA/cuDNN管理 |
| 包数量 | PyPI海量 | conda-forge较全 |
| 适用场景 | 纯Python项目 | 数据科学/AI开发 |
Poetry自动处理依赖冲突,生成锁文件确保可复现性,是现代Python项目管理的推荐方案。