Python虚拟环境详解与实践
文章目录
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 版本支持
python -m venv 来创建虚拟环境。pip install virtualenv 安装它。功能与兼容性
依赖关系和性能
命令行工具
python -m venv 来创建虚拟环境,命令简单,直接。pip install virtualenv 安装。创建虚拟环境时的差异
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:
.venv\Scripts\python.exe (Windows)
.venv/bin/python (Linux/macOS)

VS Code 选择解释器
验证虚拟环境是否生效
打开新终端(Ctrl + Shift + ~),注意路径前是否显示 (.venv),例如:
(.venv) PS C:\your_project>
如果没有自动激活,手动运行:
.venv\Scripts\activate
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 packagepip 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