venv 是 Python 内置的虚拟环境管理工具,提供了一种便捷方式,在同一系统中创建多个相互隔离的 Python 环境。每个环境都有独立的解释器和包安装路径,可避免不同项目之间的依赖冲突,是现代 Python 开发中的推荐做法。
自 Python 3.3 起,venv 成为官方内置模块,无需额外安装。
常见应用场景:
(1)为每个项目创建独立的 Python 包环境。
(2)避免全局环境依赖冲突。
(3)在无权限修改系统环境时本地安装 Python 包。
(4)为不同 Python 版本提供隔离测试环境。
◆ ◆ ◆
核心概念
1、虚拟环境
一个包含独立 python 可执行文件及其专属 site-packages 的目录结构。
2、隔离性
虚拟环境不会影响系统全局 Python,也不受其影响。
3、激活与退出
通过激活脚本将虚拟环境切换为当前命令行默认环境,退出后恢复为系统环境。
◆ ◆ ◆
基本用法
1、创建虚拟环境
python -m venv myenv上述命令会在当前目录下创建一个名为 myenv 的文件夹,结构如下:
myenv/
├── bin/ or Scripts/ # Python 可执行文件及工具(Linux/macOS or Windows)
├── include/ # C 头文件
├── lib/ # Python 标准库副本
└── pyvenv.cfg # 环境配置信息2、激活虚拟环境
Windows(CMD):
myenv\Scripts\activate.batWindows(PowerShell):
myenv\Scripts\Activate.ps1Linux/macOS:
source myenv/bin/activate3、退出虚拟环境
deactivate4、删除虚拟环境
虚拟环境是纯文件结构,删除目录即可:
rmdir myenv /s/q # 或 del /s myenv◆ ◆ ◆
应用举例
例 1:命令行方式创建并使用虚拟环境
python -m venv myenv
source myenv/bin/activate # Linux/macOS
# myenv\Scripts\activate.bat # Windows
pip install requests
deactivate例 2:Python 脚本方式创建虚拟环境
import venv
# 创建虚拟环境并启用 pip
venv.create("project_env", with_pip=True)例 3:创建虚拟环境并共享系统 site-packages
import venv
builder = venv.EnvBuilder(system_site_packages=True, with_pip=True)
builder.create("shared_env")例 4:使用 subprocess 在虚拟环境中运行脚本
import subprocess
import os
# 激活路径因平台不同而异,这里以 Linux/macOS 为例
venv_path = "myenv"
python_exec = os.path.join(venv_path, "bin", "python")
subprocess.run([python_exec, "--version"])例 5:使用 shutil 删除虚拟环境
import shutil
shutil.rmtree("myenv") # 安全地删除整个虚拟环境目录◆ ◆ ◆
常用函数速览
当你使用 venv 创建虚拟环境时,实际上是通过 EnvBuilder 类来管理和配置虚拟环境的创建过程。
venv.EnvBuilder(...)
用于配置并构建虚拟环境。
参数:
system_site_packages:是否继承系统的 site-packages,默认 False
clear:是否清除目标目录中的已有文件
with_pip:是否在虚拟环境中安装 pip(推荐设置为 True)
upgrade_deps:是否升级 pip 和 setuptools
常用方法:
EnvBuilder 类提供了多种方法来帮助我们创建和定制虚拟环境。
create(env_dir)
创建虚拟环境。
ensure_directories(env_dir)
确保虚拟环境的必要目录存在。
install_requirements(env_dir, requirements)
安装虚拟环境所需的依赖库(如使用 pip)。
get_python_executable(env_dir)
获取虚拟环境中的 Python 可执行文件路径。
update_defaults(**kwargs)
更新默认的虚拟环境设置参数。
discover(env_dir)
获取虚拟环境的相关配置信息(较少使用)。
◆ ◆ ◆
补充说明
1、venv 是官方推荐的虚拟环境管理工具,适用于大多数普通开发需求。
2、若需要更强大的环境复制、依赖导出、跨平台封装等功能,可考虑使用 virtualenv 或 poetry、[conda] 等第三方工具。
3、若激活脚本权限受限(如 PowerShell 策略),可执行以下命令解除限制:
# powershell
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.