菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python 虚拟环境的创建(venv)

虚拟环境是一个独立的 Python 运行空间,拥有自己的解释器、安装包和配置,与系统全局环境完全隔离。

Python 虚拟环境(Virtual Environment)是一个独立的 Python 运行环境,它允许你在同一台机器上为不同的项目创建隔离的 Python 环境。

不同项目可以在各自的虚拟环境中并行运行,互不干扰。

每个虚拟环境都有自己的:

  • Python 解释器
  • 安装的包/库
  • 环境变量
全局安装(版本冲突) ✓ 虚拟环境(完全隔离) 全局 Python 环境 site-packages(所有项目共享) 项目 A 需要 Django 3.2 项目 B 需要 Django 4.0 版本冲突,无法共存 项目 A .venv 独立安装 Django 3.2 项目 B .venv 独立安装 Django 4.0

虚拟环境让每个项目拥有独立的依赖空间,彻底消除版本冲突

为什么需要虚拟环境

  • 项目隔离:不同项目可使用不同版本的 Python 和第三方库
  • 避免污染:安装的包只影响当前环境,不污染全局 Python
  • 依赖可控:通过 requirements.txt 精确记录和复现环境
  • 安全测试:可以放心升级或试用新包,不影响其他项目

场景举例:

  • 项目 A 需要 Django 3.2 版本
  • 项目 B 需要 Django 4.0 版本
  • 如果在系统全局安装,两个版本会冲突

虚拟环境工具

工具名称 类型 Python版本支持 安装方式 特点 适用场景
venv(推荐) 内置模块 ≥ 3.3 无需安装,内置 轻量级、官方推荐、使用简单 通用开发、日常项目
virtualenv 第三方工具 2.x 和 3.x pip install virtualenv 功能丰富、兼容多版本 需要兼容旧版本或高级功能
conda Anaconda自带 2.x 和 3.x 随 Anaconda/Miniconda 安装 跨语言包管理、数据科学生态 数据科学、机器学习项目

若需更老版本支持,可使用 virtualenv(Python 2兼容):

pip install virtualenv # 非必须,venv 通常够用

本章节我们将使用 venv 创建和管理虚拟环境。


创建虚拟环境

Python 3.3+ 内置了 venv 模块,无需额外安装。

使用流程

使用流程总览

1
创建
python -m venv
2
激活
activate
3
安装依赖
pip install
4
开发调试
python / run
5
停用
deactivate
创建环境 python -m venv 激活 source activate 安装依赖 pip install 开发运行 python / test 停用 deactivate 激活期间:pip 和 python 命令均指向虚拟环境,不影响全局

检查 Python 版本:

python3 --version
# 或者
python --version

创建虚拟环境:

# 基本语法
python3 -m venv 环境名称

例如,创建一个名为 .venv 的虚拟环境:

实例

# 进入项目目录
mkdir my_project && cd my_project

# 创建虚拟环境(命名为'.venv'是常见约定)
python3 -m venv .venv

参数说明:

  • -m venv:使用 venv 模块
  • .venv:虚拟环境的名称(可以自定义)

创建后的目录结构

.venv/
├── bin/ # 在 Unix/Linux 系统上
│ ├── activate # 激活脚本
│ ├── python # 环境 Python 解释器
│ └── pip # 环境的 pip
├── Scripts/ # 在 Windows 系统上
│ ├── activate # 激活脚本
│ ├── python.exe # 环境 Python 解释器
│ └── pip.exe # 环境的 pip
└── Lib/ # 安装的第三方库

激活虚拟环境

激活后,当前终端的 python 和 pip 命令将自动指向该虚拟环境,所有安装操作均在隔离空间内进行。

macOS / Linux

source .venv/bin/activate

Windows(CMD / PowerShell)

.venv\Scripts\activate

激活成功后,命令行提示符通常会显示环境名称:

(.venv) $

验证激活是否生效:

# 查看 Python 路径,应指向 .venv 目录
which python # macOS/Linux
where python # Windows
→ /path/to/my_project/.venv/bin/python

使用虚拟环境

安装包

在激活的环境中,使用 pip 安装的包只会影响当前环境:

pip install package_name

例如:

# 安装单个包(如Django)
(.venv) pip install django==3.2.12
# 安装多个包
(.venv) pip install requests pandas
# 安装速度慢?使用国内镜像
(.venv) pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

查看已安装的包

(.venv) pip list
Package Version
---------- -------
Django 3.2.12
pip 21.2.4
# 查看某个包的详情
(.venv) pip show django
# 升级包
(.venv) pip install --upgrade pip

导出依赖

使用 requirements.txt 记录和复现项目环境,是团队协作的标准做法:

(.venv) pip freeze > requirements.txt

requirements.txt 文件内容示例:

Django==3.2.12
requests==2.26.0
pandas==1.3.3

从文件安装依赖

(.venv) pip install -r requirements.txt

提示:将 .venv/ 加入 .gitignore,只提交 requirements.txt。虚拟环境体积大且路径绑定,不应纳入版本控制。


退出虚拟环境

当完成工作后,可以退出虚拟环境:

deactivate

退出后,命令行提示符会恢复正常,Python 和 pip 命令将使用系统全局版本。


删除虚拟环境

要删除虚拟环境,只需删除对应的目录即可:

# 确保已退出环境
deactivate

删除虚拟环境

虚拟环境本质上是一个普通目录,删除目录即彻底移除:

macOS / Linux

rm -rf .venv

Windows

rmdir /s /q .venv
注意:删除前请先执行 deactivate 退出环境,否则当前 Shell 会保留失效的环境变量。

实际项目示例

假设开发一个 Django 项目:

实例

# 1. 创建并进入项目目录
mkdir my_site && cd my_site

# 2. 创建虚拟环境并激活
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate

# 3. 安装 Django 并记录依赖
(.venv) pip install django==4.2
(.venv) pip freeze > requirements.txt

# 4. 初始化 Django 项目
(.venv) django-admin startproject config .

# 5. 数据库迁移并启动开发服务器
(.venv) python manage.py migrate
(.venv) python manage.py runserver

# 6. 开发完成,退出环境
(.venv) deactivate

高级用法

指定 Python 版本

如果你安装了多个 Python 版本,可以指定使用哪个版本来创建虚拟环境:

python3.8 -m venv .venv # 使用 Python 3.8

创建不带 pip 的环境

python -m venv --without-pip .venv

创建继承系统包的虚拟环境

python -m venv --system-site-packages .venv

常见问题解答

1. 为什么我的虚拟环境没有 activate 脚本?

确保你使用的是正确的路径:

  • Windows: Scripts\activate
  • Unix/Linux: bin/activate

2. 如何知道当前是否在虚拟环境中?

检查命令行提示符是否有环境名称前缀,或运行:

which python

3.安装包速度慢

使用国内镜像源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name

查看 Python 解释器的路径是否在虚拟环境目录中。

4. 虚拟环境可以移动位置吗?

不建议。虚拟环境内的脚本和配置文件中硬编码了绝对路径,移动后会失效。如需迁移,最简单的方式是重新创建环境并通过 requirements.txt 恢复依赖。

5. 虚拟环境会占用多少空间?

空环境约 20–50 MB,随安装的包增多而增加。数据科学项目(NumPy、Pandas、PyTorch)可能达到数 GB。定期清理不再使用的虚拟环境是个好习惯。


最佳实践

  1. 每个项目独立一个环境:避免不同项目的依赖相互影响
  2. 统一命名为 .venv:大多数 IDE(VS Code、PyCharm)可自动识别
  3. 及时更新 requirements.txt:每次 pip install 后同步导出
  4. 版本控制中忽略虚拟环境:在 .gitignore 中添加 .venv/
  5. 定期清理废弃环境:释放磁盘空间
  6. 生产环境固定版本号:requirements.txt 中明确写 == 版本,避免意外升级
# .gitignore 推荐配置
.venv/
__pycache__/
*.pyc
.env
*.egg-info/
AI 思考中...

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /