虚拟环境与全局环境的区别

虚拟环境与全局环境的主要区别在于作用范围、依赖管理和项目隔离性。1. 全局环境影响整个系统,所有项目共享同一Python路径下的包;2. 虚拟环境为每个项目提供独立运行环境,包仅在该环境中有效;3. 使用虚拟环境可避免不同项目间的版本冲突,如Django 3.2与4.0无法共存于全局;4. 通过venv创建虚拟环境并激活后,安装的包互不干扰;5. 结合requirements.txt可精确记录依赖,便于团队协作和部署;6. 推荐开发中始终使用虚拟环境以提升可维护性和可移植性,避免污染全局。

虚拟环境和全局环境的主要区别在于作用范围、依赖管理以及项目隔离性。使用虚拟环境能避免不同项目间的包版本冲突,而全局环境则影响整个系统。

作用范围不同

全局环境是Python安装时自带的默认环境,所有通过pip install安装的包都会被放在系统的Python路径下,对所有项目都可见。

虚拟环境是为单个项目创建的独立Python运行环境,其安装的包仅在该环境中有效,不会影响其他项目或系统全局配置。

依赖管理更清晰

在全局环境中安装大量包容易导致版本混乱。比如项目A需要Django 3.2,项目B需要Django 4.0,同时装在全局会冲突。

使用虚拟环境可以:

  • 每个项目拥有独立的site-packages
  • 通过requirements.txt精确记录依赖版本
  • 方便团队协作和部署时还原相同环境

创建与激活方式

Python内置venv模块可快速创建虚拟环境:

python -m venv myproject_env

激活虚拟环境:

  • Windows:myproject_env\Scripts\activate
  • macOS/Linux:source myproject_env/bin/activate

激活后命令行提示符通常会显示环境名称,此时安装的包只属于这个环境。

推荐使用虚拟环境

除少数情况(如使用全局工具pipx、全局脚本),开发中应始终使用虚拟环境。

它带来的好处包括:

  • 避免污染全局环境
  • 便于测试不同版本的库
  • 提升项目可移植性和可维护性

基本上就这些,养成新建项目先建虚拟环境的习惯,能省去很多后续麻烦。