python 虚拟环境(保姆级教程)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

什么是 Python 虚拟环境?

Python 虚拟环境是一种隔离开发环境的技术,它允许开发者在同一个系统上为不同项目创建独立的 Python 运行空间。想象一下,如果你的厨房里同时准备不同国家的菜肴,但所有食材都混在一起,结果可能是一团糟。虚拟环境就像为每个项目提供一个独立的“厨房”,避免不同项目所需的 Python 包(食材)互相干扰。

为什么需要虚拟环境?

1. 解决依赖冲突

假设你有两个项目:一个是 Web 应用(需要 Django 3.0),另一个是数据分析工具(需要 Pandas 1.0)。如果直接安装到全局 Python 环境,Django 3.0 和 Pandas 1.0 可能存在依赖包版本冲突,导致两个项目都无法正常运行。虚拟环境通过隔离依赖,让每个项目拥有自己的“食材仓库”,避免冲突。

2. 简化环境配置

当你需要将项目分享给他人时,只需提供 requirements.txt 文件,对方通过虚拟环境即可快速复现你的开发环境。这就像将厨房的“菜谱”和“食材清单”打包,让他人能精准复制你的烹饪条件。

3. 提升安全性

虚拟环境默认隔离了系统全局的 Python 包,避免因项目安装的第三方包影响系统稳定性。例如,某个恶意包或存在漏洞的旧版本包,不会威胁到全局环境。


Python 虚拟环境的常用工具

以下是 Python 生态中常用的虚拟环境管理工具:

工具名特点适用场景
venvPython 3.3+ 内置模块,轻量级、无需额外安装。基础项目,快速搭建隔离环境。
conda支持多语言(Python、R 等),擅长管理复杂依赖(如科学计算库)。数据科学、需要跨语言支持的场景。
pipenv结合 Pip 和虚拟环境,自动化管理依赖和版本。需要自动化工作流的中型项目。
virtualenv早期主流工具,兼容 Python 2 和 3。老旧项目或需兼容 Python 2 的环境。

如何创建和使用虚拟环境?

1. 使用 venv(推荐新手)

步骤 1:创建虚拟环境

python -m venv myproject_env  

这条命令会在当前目录下生成一个名为 myproject_env 的文件夹,包含独立的 Python 解释器和包目录。

步骤 2:激活虚拟环境

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

激活后,命令行会显示环境名称(如 (myproject_env)),表示已进入虚拟环境。

步骤 3:安装包与管理依赖

在激活状态下,所有通过 pip 安装的包仅保存在虚拟环境中:

pip install django==3.0  
pip freeze > requirements.txt  # 保存依赖列表  

步骤 4:退出虚拟环境

deactivate  

2. 使用 conda(科学计算场景)

创建环境并指定 Python 版本:

conda create -n data_env python=3.8  

激活环境:

conda activate data_env  

安装科学计算包:

conda install numpy pandas  

实际案例:虚拟环境的实战应用

案例 1:开发 Web 应用与数据分析工具

假设你同时在开发一个 Django Web 应用(需要 requests==2.25)和一个数据可视化项目(需要 requests==2.26)。

步骤:

  1. 创建两个独立环境
    # Web 应用环境  
    python -m venv web_env  
    # 数据分析环境  
    conda create -n data_env python=3.8  
    
  2. 在各自环境中安装依赖
    # 激活 web_env 后安装  
    pip install django==3.0 requests==2.25  
    # 激活 data_env 后安装  
    pip install pandas matplotlib requests==2.26  
    
  3. 切换环境运行项目
    每次开发前激活对应环境,避免版本冲突。

案例 2:快速复现他人项目

假设你收到一个项目,其 requirements.txt 内容如下:

flask==2.0.1  
numpy==1.21.2  

步骤:

  1. 创建新虚拟环境:
    python -m venv project_env  
    
  2. 激活并安装依赖:
    source project_env/bin/activate  
    pip install -r requirements.txt  
    

此时,虚拟环境已完美复现了原项目的运行环境。


常见问题与解决方案

1. “虚拟环境未生效,全局包被使用”

原因:可能未激活环境或路径配置错误。
解决

  • 确认环境已激活(命令行显示环境名)。
  • 检查 PATH 环境变量是否指向虚拟环境的 binScripts 文件夹。

2. “安装包时提示权限错误”

原因:尝试写入全局环境目录。
解决

  • 确保在虚拟环境中安装:
    pip install <package>  
    
  • 禁用全局写入权限(推荐):
    python -m pip --disable-pip-version-check install ...  
    

3. “如何删除虚拟环境?”

直接删除环境文件夹即可:

rm -rf myproject_env  # macOS/Linux  
rmdir /s myproject_env  # Windows  

虚拟环境的进阶技巧

1. 自动化环境管理

使用 pipenv 可以一键创建并管理环境:

pipenv install django==3.0  
pipenv shell  # 自动激活环境  

2. 跨平台环境兼容

通过 .gitignore 排除虚拟环境文件夹,避免代码仓库被污染:
在项目根目录的 .gitignore 文件中添加:

myproject_env/  
venv/  

结论

Python 虚拟环境是每位开发者必备的“开发利器”。通过隔离依赖、简化配置和提升安全性,它能显著降低项目维护成本。无论是初学者还是中级开发者,掌握虚拟环境的使用方法,都能让你在复杂的项目开发中游刃有余。

从今天起,尝试为你的每个新项目创建独立虚拟环境吧!你的未来代码,会感谢你今天做出的这个决定。

最新发布