参考:

venv --- 虚拟环境的创建 — Python 3.12.5 文档

【Python进阶】Python虚拟环境使用全方位指南:从零开始轻松实践 - 知乎 (zhihu.com)

Python 如何删除使用 venv 创建的 Python3 虚拟环境|极客教程 (geek-docs.com)

我们知道,python程序的开发和运行,需要基于python环境。不过,实际开发中我们常常会使用虚拟环境。那这个虚拟环境是什么呢?

在进行Python开发时,你可能遇到这样的问题:一个项目需要Python库A的1.0版本,而另一个项目则依赖于A的2.0版本。如果直接在全局环境中安装这些包,就可能出现版本冲突,影响项目的正常运行。这时,Python虚拟环境就能发挥它的作用,为每个项目提供一个“干净”的Python运行环境。

但是要注意,虚拟环境并不是脱离本地环境而存在的,而是基于本地环境的,虚拟环境的重点是为每个项目管理各种不同类型和版本的库,而并非python解释器的版本。所以,即使使用了虚拟环境,也要先安装了本地的python环境。另一方面,没有本地环境也就压根无法创建虚拟环境。

虚拟环境是在现有的 Python 安装版基础之上创建的,这被称为虚拟环境的“基础”Python,并且还可选择与基础环境中的软件包隔离开来,这样只有在虚拟环境中显式安装的软件包才是可用的。

当在虚拟环境中使用时,常见安装工具如pip将把 Python 软件包安装到虚拟环境而无需显式地指明这一点。

虚拟环境主要特性:

  • 用来包含支持一个项目(库或应用程序)所需的特定 Python 解释器、软件库和二进制文件。 它们在默认情况下与其他虚拟环境中的软件以及操作系统中安装的 Python 解释器和库保持隔离。

  • 包含在一个目录中,根据惯例被命名为项目目录下的``venv`` 或 .venv,或是有许多虚拟环境的容器目录下,如 ~/.virtualenvs

  • 不可签入 Git 等源代码控制系统。

  • 被视为是可丢弃性的 —— 应当能够简单地删除并从头开始重建。 你不应在虚拟环境中放置任何项目代码。

  • 不被视为是可移动或可复制的 —— 你只能在目标位置重建相同的环境。

创建虚拟环境

在使用虚拟环境之前,我们需要基于基础的本地python解释器来创建虚拟环境,一般有三种方式。

使用Python内置venv模块创建虚拟环境

从Python 3.3版本起,Python标准库自带了venv模块用于创建虚拟环境。

创建虚拟环境:

# 假设您在项目根目录下创建虚拟环境
$ python3 -m venv my_venv

这将在当前目录下生成一个名为my_venv的文件夹,其中包含了独立的Python解释器和pip包管理器。

激活虚拟环境:

  • Windows系统:
$ .\my_venv\Scripts\activate
  • Linux或macOS系统:
$ source my_venv/bin/activate

激活后,终端前缀将显示虚拟环境名,表示当前正在使用该环境的Python解释器。

安装和管理包:

在激活的虚拟环境中,您可以安装和管理Python包:

( my_venv ) $ pip install django==3.2

退出虚拟环境:

( my_venv ) $ deactivate

使用virtualenv第三方库创建虚拟环境

对于早期Python版本或者希望额外功能的情况,可以使用virtualenv库创建虚拟环境。首先需要全局安装virtualenv

$ pip install virtualenv

然后创建和激活虚拟环境:

# 创建虚拟环境
$ virtualenv my_virtualenv

# 激活虚拟环境(同`venv`激活方式)
$ source my_virtualenv/bin/activate

使用conda环境管理器

对于数据科学和机器学习领域,Anaconda发行版的conda环境管理器是另一种广泛使用的虚拟环境工具。

创建conda环境:

# 创建名为my_conda_env的新conda环境,指定Python版本
$ conda create --name my_conda_env python=3.8

激活conda环境:

$ conda activate my_conda_env

安装和管理包:

(my_conda_env) $ conda install numpy pandas scikit-learn

退出conda环境:

(my_conda_env) $ conda deactivate

综合比较

  • venv模块是Python标准库的一部分,无需额外安装,适用于简单的Python项目开发。
  • virtualenv提供了更多定制化选项,比如可以指定特定的Python解释器版本,适合复杂项目和跨平台使用。
  • conda环境不仅限于Python,还可以管理其他语言的库和软件包,尤其适合大数据分析和科学计算场景,因为它预装了许多科学计算相关的库,并且具备出色的包管理和版本管理能力。

虚拟环境与IDE集成

大多数现代集成开发环境(IDEs)都支持对Python虚拟环境的集成,使得在IDE内创建、激活和管理虚拟环境变得十分便捷。

例如,在PyCharm IDE中:

  1. 创建虚拟环境
  2. 打开或新建一个项目,进入"Settings/Preferences"。
  3. 在"Project Interpreter"选项中点击齿轮图标,选择"Add",然后选择"New Virtual Environment"。
  4. 指定虚拟环境名称、位置以及使用的Python解释器版本,然后点击"Create"。
  5. 激活并使用虚拟环境
  6. PyCharm会自动识别项目根目录下的虚拟环境,并将其作为默认的项目解释器。
  7. 通过IDE内的包管理界面,可以直接在此虚拟环境中安装、卸载和升级Python包。

同样地,Visual Studio Code也通过插件如"Python Extension"提供了类似的虚拟环境支持:

  • 使用VS Code的命令面板(快捷键Ctrl + Shift + PCmd + Shift + P),搜索"Python: Create New Virtual Environment"命令来创建新的虚拟环境。
  • 然后在工作区或用户设置中指定此虚拟环境作为Python的默认解释器。

venv虚拟环境

这里我们重点讲解使用Python内置venv模块创建虚拟环境

在 3.5 版本发生变更: 现在推荐使用 venv 来创建虚拟环境。

注意:pyvenv 是针对 Python 3.3 和 3.4 创建虚拟环境的推荐工具,并在python3.6中被弃用。

venv 模块支持创建轻量的“虚拟环境”,每个虚拟环境将拥有它们自己独立的安装在其 site目录中的 Python 软件包集合。

创建虚拟环境

通过执行 venv 指令来创建一个虚拟环境

python -m venv /path/to/new/virtual/environment

运行此命令将创建目标目录(父目录若不存在也将创建),并放置一个 pyvenv.cfg 文件在其中,文件中有一个 home 键,它的值指向运行此命令的 Python 安装。它还会创建一个 bin 子目录(在 Windows 上是 Scripts),其中包含 Python 二进制文件的副本或符号链接(视创建环境时使用的平台或参数而定)。它还会创建一个(初始为空的) lib/pythonX.Y/site-packages 子目录(在 Windows 上是 Lib\site-packages)。如果指定了一个现有的目录,这个目录就将被重新使用。

pyvenv.cfg

pyvenv.cfg 是虚拟环境的配置文件,这是一个文本文件,打开:

home = C:\Users\StoneWM\AppData\Local\Programs\Python\Python37
include-system-site-packages = false
version = 3.7.2

可以看出,配置文件中记录了 python 的路径和版本,虚拟环境是否使用系统的 site pakages,以及该虚拟环境所基于的本地python版本。

相关的问题:

如何解决PyCharm显示:无效的Python SDK_python_脚本之家

补充:--system-site-packages

Python 虚拟环境继承全局 site-packages 中的指定包|极客教程 (geek-docs.com)

Python 的虚拟环境工具 venv 允许我们创建独立的 Python 环境。默认情况下,虚拟环境是不会继承全局 site-packages 中的包的。然而,我们可以通过在创建虚拟环境时使用 --system-site-packages 参数来使其继承全局的 site-packages。

$ python3 -m venv --system-site-packages myenv

注意,是在创建虚拟环境的同时指定。

实战总结

我在桌面创建了一个工程目录,然后在里面写了个hello.py,然后打开cmd,进入该路径下,创建虚拟环境

于是,在桌面的文件夹里就出现了一个文件夹

这里多出的myvenv就是虚拟环境所在的目录。

打开看看

Include在创建后默认为空;

Lib就是存放虚拟环境依赖库的,里面就是site-packages子目录,再里面就是各种库

Scripts就是虚拟环境所用的解释器、pip等

其中,activate.bat是用来启动虚拟环境的,deactivate.bat是用来关闭虚拟环境的。

再就是pyvenv.cfg,打开看看

home表示本地python所在的安装目录;

include-system-site-packages表示是否包含本地python的库;

version表示该虚拟环境所基于的本地python的版本;

executable表示解释器所在路径;

command表示生成虚拟环境时所执行的命令,都是以绝对路径的形式展示。

注意,以上都是自动生成的,一般无需修改,但是,如果路径做了更改,就需要进行对应的修改。

创建好之后,在IDE中比如vscode中就会列出这个创建的虚拟环境,vscode可以实现自动管理,无需我们手动执行activate.bat。

删除虚拟环境

有时候,我们可能不需要虚拟环境,就可以将其删除,然后直接使用本地的环境

下面我们将详细介绍删除 Python3 虚拟环境的几种方法。

方法一:手动删除虚拟环境

我们可以手动删除虚拟环境的文件夹来删除整个虚拟环境。首先,我们需要知道虚拟环境的位置,这是通过在命令行中运行以下命令得到的:

python3 -m venv ENV_NAME

其中 ENV_NAME 是你创建虚拟环境时指定的名称。通过运行上述命令,我们可以得到虚拟环境的位置。

在知道了虚拟环境的位置之后,我们可以使用以下命令来删除整个虚拟环境:

rm -rf ENV_NAME

这将删除虚拟环境及其包含的文件和文件夹。请注意,删除操作是不可逆的,一旦删除,数据将无法恢复。因此在删除之前,请确保你不再需要该虚拟环境。

方法二:使用 venv 自带的 deactivate 命令

除了手动删除虚拟环境的文件夹,venv 还提供了一个内置命令来退出虚拟环境。这个命令叫做 deactivate。在虚拟环境中运行该命令后,你将会退出虚拟环境并返回到系统默认的 Python 环境。

使用方法很简单,在虚拟环境中运行以下命令即可:

deactivate

这将退出虚拟环境并返回到系统默认的 Python 环境,你可以继续在系统中使用全局安装的 Python 版本。

方法三:使用 PyCharm 删除虚拟环境

如果你使用的是 PyCharm 这样的 Python 集成开发环境,你可以使用它提供的图形界面来删除虚拟环境。在 PyCharm  中,打开你的项目并导航到 File -> Settings -> Project -> Project Interpreter。在项目解释器的下拉列表中,你会看到所有可用的虚拟环境。选择你要删除的虚拟环境,点击右侧的减号图标,并确认删除操作。

PyCharm 将会删除所选虚拟环境的文件和文件夹,并将其从项目中移除。

根据你的实际情况,你可以选择其中的一种方法来删除不再需要的虚拟环境。记住,在删除虚拟环境之前,请务必备份重要的项目数据,以免误删导致不可恢复的损失。

Anaconda 

在 Python 开发过程中,Anaconda 作为一款功能强大的环境管理工具,在多种场景下都能发挥显著优势。以下是推荐使用 Anaconda 管理 Python 环境的具体情况及原因分析:

一、多项目依赖隔离场景

  • 适用场景:同时开发多个 Python 项目,且各项目依赖的库版本、Python 解释器版本存在冲突。

    • 例如:项目 A 需要TensorFlow 2.8Python 3.8,项目 B 需要TensorFlow 2.12Python 3.10

  • 优势:

    • 通过创建独立的虚拟环境,避免不同项目的依赖冲突(如某个库的新版本不兼容旧项目)。

    • 每个环境可单独配置 Python 版本和库,确保项目运行环境的一致性。

  • 操作示例:

# 创建指定Python版本的环境
conda create -n projectA python=3.8
# 激活环境并安装依赖
conda activate projectA
pip install tensorflow==2.8

二、数据科学与机器学习领域

  • 适用场景:从事数据分析、AI 建模、科学计算等任务。

  • 优势:

    • 预装常用库:自带NumPyPandasMatplotlibScikit-learn等数据科学核心库,减少手动安装步骤。

    • GPU 加速支持:方便配置CUDACUDNN等 GPU 加速工具,适配TensorFlowPyTorch等框架的 GPU 训练需求。

    • 环境共享便捷:可通过conda env export生成环境配置文件,便于团队协作时快速复现开发环境。

  • 典型案例:

    • 机器学习工程师同时开发基于PyTorch的图像识别模型和基于TensorFlow的自然语言处理模型,可分别创建环境管理依赖。

三、跨平台开发与环境迁移

  • 适用场景:需要在 Windows、macOS、Linux 等不同操作系统间迁移项目,或部署代码到服务器。

  • 优势:

    • 环境配置文件(如environment.yml)可跨平台使用,确保不同系统下环境一致。

    • 对于服务器部署,可通过conda快速安装系统依赖(如 C/C++ 编译工具),避免手动配置的复杂性。

  • 操作示例:

# environment.yml示例
name: my_project
channels:
  - defaults
dependencies:
  - python=3.9
  - numpy=1.23
  - pip:
    - tensorflow==2.10

四、新手入门与简化包管理

  • 适用场景:Python 初学者,或对包管理、环境配置不熟悉的用户。

  • 优势:

    • 图形化界面友好:Anaconda Navigator 提供可视化工具,无需记忆复杂命令即可创建、管理环境和安装库。

    • 自动解决依赖冲突:conda install命令会自动分析并安装依赖库的兼容版本,减少因依赖错误导致的问题。

  • 对比传统方式:

    • 传统pip需手动处理依赖(如pip install -r requirements.txt可能因版本不兼容失败),而conda的依赖解析更智能。

五、大规模科学计算与库支持

  • 适用场景:涉及 C/C++ 扩展库、Fortran 编译代码的科学计算项目(如气象模型、物理模拟)。

  • 优势:

    • conda支持二进制包(.whl文件)和编译后的原生代码,可直接安装scipynetCDF4等依赖复杂的科学库。

    • 部分库(如geopandas)在pip中安装可能因编译环境缺失失败,而conda通过conda-forge等渠道提供预编译版本。

六、团队协作与项目复现

  • 适用场景:多人协作开发,或需要向他人交付可复现的项目环境。

  • 优势:

    • 通过conda env export生成环境文件,团队成员可直接通过conda env create -f environment.yml快速搭建相同环境,避免 “在我电脑上能运行” 的问题。

    • 配合版本控制工具(如 Git),可将环境配置文件与代码一同管理,确保项目可复现性。

不推荐使用 Anaconda 的场景

  • 轻量级项目或极简环境:仅需少量库的小型脚本(如单个 Python 文件),使用venv(Python 内置虚拟环境)即可,无需引入 Anaconda 的复杂性。

  • 追求极致性能或轻量级部署:Anaconda 安装包较大(约 500MB),若目标是部署轻量级服务(如 Docker 容器),可考虑基于Python:3.9-slim镜像手动配置环境。

总结:何时选择 Anaconda?

场景类型 核心优势 典型用户
多项目依赖隔离 虚拟环境独立,避免版本冲突 同时开发多个项目的工程师
数据科学与 AI 预装常用库,GPU 加速支持 数据分析师、机器学习开发者
跨平台与环境迁移 配置文件跨系统兼容,部署便捷 全栈开发人员、DevOps 团队
新手入门 图形化界面,自动依赖解析 Python 初学者
复杂科学计算 原生库支持,预编译包减少编译错误 科研人员、科学计算开发者
团队协作 环境配置文件共享,确保项目可复现 团队开发项目负责人

如果你的工作涉及上述场景,Anaconda 会是管理 Python 环境的高效选择;反之,若需求简单,可优先考虑轻量级方案(如venv+pip)。

Anaconda教程参考:

Anaconda 教程 | 菜鸟教程

(1 封私信 / 6 条消息) Anaconda介绍、安装及使用教程 - 知乎

更多待补充。

miniconda 

Miniconda 和 Anaconda 是数据科学和 Python 开发中常用的环境管理工具,二者核心区别在于预装包的丰富度和安装体积。以下从功能、适用场景、安装配置等维度对比分析:

一、核心差异对比

维度 Anaconda Miniconda
安装包体积 约 4GB(包含 150 + 科学计算库) 仅 50MB(仅包含 conda、Python 及基础依赖)
预装内容 包含 NumPy、Pandas、Matplotlib、Jupyter 等常用数据科学库,适合一键部署环境。 仅包含 conda 包管理器和 Python,需手动安装所需库(如conda install pandas)。
适用场景 数据科学初学者、需快速搭建环境的用户,或网络条件差(避免频繁下载)的场景。 高级用户、磁盘空间有限(如笔记本)或需定制化环境的场景(如仅需 TensorFlow+PyTorch)。
环境管理逻辑 完全依赖 conda 管理包和环境(如创建环境:conda create -n env_name python=3.8)。 支持 conda 和 pip 混合管理(如用 pip 安装特定版本库),灵活性更高。

二、功能模块对比

1. 包管理系统

  • Anaconda:

    • 预装完整的科学计算生态(如 SciPy、Scikit-learn、Seaborn),适合无需定制的通用场景。

    • 依赖conda命令安装 / 更新包,安装路径统一管理,避免版本冲突。

  • Miniconda:

    • 初始仅含基础组件,需按需安装库(如conda install numpy matplotlib),可通过conda list查看已安装包。

    • 支持混合使用pip安装 conda 未收录的包(如某些小众 Python 库),但需注意依赖冲突(建议先用conda尝试安装)。

2. 环境隔离能力

二者均通过conda env命令创建独立环境,例如:

# 创建Python 3.9环境(Anaconda/Miniconda通用) 
conda create -n myenv python=3.9 
conda activate myenv # 激活环境
  • Anaconda:环境默认继承主环境的所有预装包(体积可能达 1GB+),适合快速复制完整环境。

  • Miniconda:环境初始仅含 Python 和 conda 基础组件,需手动安装所需库,环境体积通常 < 200MB。

3. 可视化工具

  • Anaconda:附带Anaconda Navigator图形界面,可通过拖拽管理环境和启动 Jupyter Notebook 等应用。

  • Miniconda:默认仅提供命令行界面,适合习惯终端操作的用户;若需图形界面,可手动安装 Navigator(conda install anaconda-navigator)。

三、安装与配置对比

1. 安装流程

  • Anaconda:

    • 从官网下载对应系统的安装包(如 Windows/macOS/Linux 的 64 位安装程序)。

    • 按向导安装(默认路径:C:\Users\Username\anaconda3),安装过程需 10-30 分钟。

  • Miniconda:

    • 从官网下载 Miniconda3 安装包(体积小,下载快)。

    • 安装时选择 “仅为当前用户安装”,避免管理员权限问题,安装时间 < 5 分钟。

2. 配置优化

  • 镜像源设置(加速下载):


# Anaconda/Miniconda通用,添加清华镜像 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main 
conda config --set show_channel_urls yes
  • 环境变量:

    • Anaconda 默认自动添加conda到系统路径,打开终端即可使用。

    • Miniconda 需手动添加路径(如 Linux/macOS 需在.bashrc.zshrc中添加export PATH="/path/to/miniconda3/bin:$PATH")。

四、典型使用场景

1. Anaconda 适用场景

  • 数据科学入门者,希望一键获取全套工具链。

  • 需频繁切换项目(如同时开发 Web 和机器学习应用),依赖环境隔离。

  • 网络条件差,希望减少后续下载量。

2. Miniconda 适用场景

  • 服务器部署(如 Docker 容器),需最小化镜像体积。

  • 仅需特定库(如仅用 PyTorch+Flask),避免冗余安装。

  • 高级用户习惯手动管理依赖,追求环境纯净度。

五、常见操作对比

任务 Anaconda 命令 Miniconda 命令
创建 Python 3.10 环境 conda create -n py310 python=3.10 同上
安装 Pandas conda install pandas 同上
用 pip 安装特定包 pip install package_name 同上
删除环境 conda remove -n myenv --all 同上
导出环境配置 conda env export > environment.yml 同上
更新 conda conda update -n base -c defaults conda 同上

六、选择建议

  • 选 Anaconda:若符合以下条件:

    • 初次接触 Python 和数据科学,希望降低配置门槛。

    • 磁盘空间充足(≥10GB),且需长期使用多种科学计算库。

    • 偏好图形界面管理环境。

  • 选 Miniconda:若符合以下条件:

    • 熟悉命令行操作,追求高效定制。

    • 磁盘空间有限(如笔记本仅有 128GB SSD)。

    • 需频繁创建轻量级环境(如开发多个独立项目)。

总结

Anaconda 是 “全功能套餐”,适合追求便捷的初学者;Miniconda 是 “基础组件 + 按需扩展”,适合追求灵活性的高级用户。二者核心功能一致,可根据自身需求、磁盘空间和网络条件灵活选择。安装后,建议通过conda clean --all定期清理缓存,进一步优化空间使用。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐