Python虚拟环境详解与实践

文章目录

  • Python之虚拟环境
  • 虚拟环境核心概念
  • 为什么需要虚拟环境?
  • 虚拟环境注意事项
  • 创建虚拟环境
  • 使用 venv (Python 3.3+ 内置)
  • 使用 virtualenv (第三方工具,支持Python 2/3)
  • 与 venv创建方式的区别
  • Python 版本支持
  • 功能与兼容性
  • 依赖关系和性能
  • 命令行工具
  • 创建虚拟环境时的差异
  • 使用 conda (Anaconda/Miniconda)
  • 激活/退出虚拟环境
  • 虚拟环境管理
  • 安装/卸载包
  • 导出依赖
  • 复制虚拟环境
  • 删除虚拟环境
  • 虚拟环境目录结构
  • 高级用法
  • 继承系统全局包
  • 指定不同版本的Python
  • 使用 pipenv (更高级的虚拟环境管理)
  • 使用 poetry (现代Python项目管理)
  • IDE集成
  • VS Code
  • 创建虚拟环境(如果尚未创建)
  • 在 VS Code 中打开项目
  • 选择虚拟环境中的 Python 解释器
  • 验证虚拟环境是否生效
  • PyCharm
  • 常见问题解决
  • 激活脚本无法执行
  • 虚拟环境找不到包
  • 跨平台兼容性问题
  • pip工具使用方法
  • 安装方法对比表
  • 常用pip命令补充
  • Python之虚拟环境

    虚拟环境是 Python 开发中的重要工具,它可以为每个项目创建独立的 Python 运行环境,解决不同项目间的依赖冲突问题。

    虚拟环境核心概念

    为什么需要虚拟环境?

  • 隔离项目依赖:不同项目可能需要不同版本的库

  • 避免污染系统环境:防止包安装到全局 Python 中

  • 便于依赖管理:每个项目有独立的依赖清单

  • 团队协作:确保所有开发者使用相同的环境

  • 虚拟环境注意事项

  • 每个项目单独环境:避免依赖冲突

  • 不提交环境目录:在 .gitignore 中添加 myenv/

  • 提交依赖文件:确保 requirements.txt 或 Pipfile 提交到版本控制

  • 文档记录环境:在 README 中说明 Python 版本和主要依赖

  • 定期更新依赖:使用 pip list –outdated 检查更新

  • 虚拟环境是 Python 开发的基础设施,合理使用可以大大提高开发效率和项目可维护性。

    创建虚拟环境

    使用 venv (Python 3.3+ 内置)

    # 创建虚拟环境
    python -m venv myenv
    
    # 创建指定Python版本的虚拟环境
    python3.9 -m venv myenv
    

    上述命令解释:

  • 虚拟环境:为每个项目单独建一个 “软件安装目录”(比如 myvenv)

  • 拷贝 Python 解释器、pip 等工具到 myvenv/Scripts文件夹

  • 所有依赖包都安装到 myvenv/Lib/site-packages

  • 完全独立,不干扰其他项目

  • 使用 virtualenv (第三方工具,支持Python 2/3)

    pip install virtualenv
    # 安装全局python一样版本的环境
    virtualenv myenv
    

    与 venv创建方式的区别
    Python 版本支持
  • venv:是 Python 3.3 及以上版本内置的模块,因此只支持 Python 3.x 版本。你不需要单独安装它,直接使用 python -m venv 来创建虚拟环境。
  • virtualenv:是一个第三方工具,支持 Python 2.x 和 Python 3.x,适用于多种 Python 版本。你需要通过 pip install virtualenv 安装它。
  • 功能与兼容性
  • venv:是 Python 官方推荐的工具,功能较为简洁,适合大多数使用场景。但它仅支持创建 Python 3 的虚拟环境,因此对于需要兼容 Python 2.x 的项目不适用。
  • virtualenv:功能更为丰富,并且兼容 Python 2.x 和 3.x,可以创建多种版本的虚拟环境,适用于更多的场景,特别是如果你在项目中需要支持多个 Python 版本。
  • 依赖关系和性能
  • venv:是 Python 官方的一部分,性能较为高效。它的依赖相对较少,并且由于其内置于 Python 中,它不依赖外部安装,简化了使用过程。
  • virtualenv:由于是第三方工具,可能会有额外的依赖,并且需要通过 pip 安装。某些情况下,virtualenv 在创建虚拟环境时会比 venv 更加灵活,但也可能需要更多的配置和管理。
  • 命令行工具
  • venv:使用 python -m venv 来创建虚拟环境,命令简单,直接。
  • virtualenv:使用 virtualenv 命令来创建虚拟环境,使用时需要先通过 pip install virtualenv 安装。
  • 创建虚拟环境时的差异
  • venv:创建虚拟环境时,它会根据系统的 Python 版本来生成相应的环境。若需要特定版本的 Python,用户必须手动切换。
  • virtualenv:可以指定 Python 版本(如 virtualenv -p python3.9 myenv),并且可以灵活选择你想要的 Python 版本来创建虚拟环境。
  • 使用 conda (Anaconda/Miniconda)

    conda create --name myenv python=3.8
    

    激活/退出虚拟环境

    操作系统 激活命令 退出命令
    Linux/Mac source myenv/bin/activate deactivate
    Windows myenv\Scripts\activate deactivate
    Conda conda activate myenv conda deactivate


    进入虚拟环境,会看到(虚拟环境名称在前面,代表进入虚拟环境中)

    虚拟环境管理

    安装/卸载包

    # 安装包
    pip install package
    
    # 安装指定版本
    pip install package==1.0.0
    
    # 从requirements.txt安装
    pip install -r requirements.txt
    
    # 卸载包
    pip uninstall package
    

    导出依赖

    pip freeze > requirements.txt
    

    复制虚拟环境

    # 方案1:通过requirements.txt
    pip freeze > requirements.txt
    python -m venv newenv
    source newenv/bin/activate # Linux/Mac 可执行文件
    目录\myenv\Scripts\activate # windows环境
    pip install -r requirements.txt
    
    # 方案2:直接复制(不推荐)
    cp -r oldenv newenv
    

    删除虚拟环境

  • 直接删除目录即可
  • rm -rf myenv  # Linux/Mac
    rd /s /q myenv  # Windows
    

    虚拟环境目录结构

    典型的 venv 虚拟环境目录结构:

    myenv/
    ├── bin/            # Linux/Mac 可执行文件
    │   ├── python      # Python 解释器
    │   ├── pip         # pip 工具
    │   └── activate    # 激活脚本
    ├── Scripts/        # Windows 可执行文件
    │   ├── python.exe
    │   ├── pip.exe
    │   └── activate.bat
    ├── Lib/            # 安装的包
    │   └── site-packages/
    └── pyvenv.cfg      # 虚拟环境配置文件
    

    高级用法

    继承系统全局包

    python -m venv myenv --system-site-packages
    

    指定不同版本的Python

    # 使用指定Python版本创建
    virtualenv -p /usr/bin/python3.7 myenv
    

    使用 pipenv (更高级的虚拟环境管理)

    pip install pipenv
    pipenv install package  # 自动创建虚拟环境
    pipenv shell           # 进入虚拟环境
    

    使用 poetry (现代Python项目管理)

    pip install poetry
    poetry new project     # 创建项目
    poetry add package     # 添加依赖
    poetry shell           # 进入虚拟环境
    

    IDE集成

    VS Code

    创建虚拟环境(如果尚未创建)

    在项目文件夹中打开终端(Ctrl + ~),运行以下命令:

    # 创建虚拟环境(默认使用 Python 3)
    python -m venv .venv
    .venv 是虚拟环境文件夹的名称(可自定义,如 venv、env 等)。
    
    

    如果系统有多个 Python 版本,需指定路径,例如:

    # 使用 Python 3.11 创建虚拟环境
    C:\Python311\python.exe -m venv .venv
    
    在 VS Code 中打开项目

    打开项目文件夹:

  • 启动 VS Code,点击 File > Open Folder(或直接拖拽文件夹到 VS Code)。

  • 确保 Python 扩展已安装:

  • 在扩展市场(Ctrl + Shift + X)搜索 Python,安装 Microsoft 官方 Python 扩展。

  • 选择虚拟环境中的 Python 解释器

    打开命令面板:

  • 按 Ctrl + Shift + P(Mac:Cmd + Shift + P)。

  • 输入并选择命令:

  • 输入 Python: Select Interpreter,按回车。

  • 选择虚拟环境的 Python:

  • 列表中会显示所有检测到的 Python 解释器,格式通常为:
  • .venv\Scripts\python.exe (Windows)
    .venv/bin/python (Linux/macOS)
    
  • 选择你的虚拟环境路径(如下图)。
  • VS Code 选择解释器

    验证虚拟环境是否生效
  • 检查终端:
  • 打开新终端(Ctrl + Shift + ~),注意路径前是否显示 (.venv),例如:

    (.venv) PS C:\your_project>
    如果没有自动激活,手动运行:
    
  • Windows:
  • .venv\Scripts\activate
    
  • Linux/macOS:
  • source .venv/bin/activate
    

  • 安装依赖:
  • 在激活的虚拟环境中,用 pip 安装项目所需的包(如 pip install numpy),这些包会安装到虚拟环境中,而非全局。

    PyCharm

  • 打开项目设置 File > Settings

  • 选择 Project: YourProject > Python Interpreter

  • 添加虚拟环境中的 Python

  • 常见问题解决

    激活脚本无法执行

    # Windows 报错"无法加载脚本"
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
    

    虚拟环境找不到包

  • 确保已激活正确的虚拟环境

  • 检查 pip list 确认包已安装

  • 确认 IDE 使用的是虚拟环境的解释器

  • 跨平台兼容性问题

  • Windows 和 Linux 创建的虚拟环境不能混用

  • 建议每个平台单独创建环境

  • pip工具使用方法

    安装方法对比表
    安装方式 命令示例 适用场景 优点 缺点 注意事项
    pip安装 pip install package
    pip install package==1.0.0
    大多数常规安装场景 简单直接,自动解决依赖 需要网络连接 推荐使用虚拟环境
    指定源安装 pip install package -i https://pypi.tuna.tsinghua.edu.cn/simple 国内用户加速下载 下载速度快 需要知道可用的镜像源 常用镜像源:清华、阿里云、豆瓣等
    安装whl文件 pip install package-1.0.0-py3-none-any.whl 离线安装或安装预编译包 避免编译过程,安装快 需要提前下载对应版本的whl文件 注意Python版本和系统架构匹配
    安装tar.gz源码 pip install package-1.0.0.tar.gz 需要从源码安装或自定义安装 可查看源码 可能需要编译环境 可能需要安装编译工具(gcc等)
    setup.py安装 python setup.py install 开发模式安装或本地包安装 适合开发调试 可能影响系统Python环境 建议在虚拟环境中使用
    conda安装 conda install package Anaconda/Miniconda环境 自动处理复杂科学计算包的依赖 包版本可能不如PyPI新 适合数据科学领域
    批量安装 pip install -r requirements.txt 项目依赖批量安装 一键安装所有依赖 需要维护requirements.txt文件 文件格式:package==1.0.0
    常用pip命令补充
    操作 命令 说明
    升级pip python -m pip install --upgrade pip 确保使用最新版pip
    查看已安装包 pip list 列出所有已安装的包
    检查可升级包 pip list --outdated 显示可升级的包
    升级包 pip install --upgrade package 升级指定包
    卸载包 pip uninstall package 移除已安装的包
    查看包信息 pip show package 显示包的详细信息
    下载包不安装 pip download package -d "dir" 只下载不安装,适合离线环境
    导出环境依赖 pip freeze > requirements.txt 生成依赖文件

    作者:rufeike

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python虚拟环境详解与实践

    发表回复