在Python项目开发中,全局Python环境安装过多第三方库很容易出现版本冲突问题,比如项目A需要Django 3.2,项目B需要Django 4.0,直接安装在全局环境会导致其中一个项目无法正常运行。虚拟环境可以为每个项目创建独立的依赖空间,让不同项目的依赖互不干扰,运行Python脚本时也能保证使用指定版本的依赖库。

创建Python虚拟环境
Python 3.3及以上版本内置了venv模块,不需要额外安装工具就能创建虚拟环境,操作非常简单。
使用venv创建虚拟环境
打开终端,进入到你的项目目录,执行以下命令创建虚拟环境:
# 创建名为venv的虚拟环境,目录名可以自定义 python -m venv venv
如果是Linux或者macOS系统,可能需要使用python3命令:
python3 -m venv venv
执行完成后,项目目录下会出现一个venv文件夹,里面包含虚拟环境的所有文件,包括独立的Python解释器和pip工具。
使用virtualenv创建虚拟环境(可选)
如果需要兼容Python 2或者需要更多自定义功能,可以使用virtualenv工具,首先全局安装virtualenv:
pip install virtualenv # Linux/macOS用pip3 # pip3 install virtualenv
安装完成后执行创建命令:
virtualenv venv
激活虚拟环境
创建完成后需要先激活虚拟环境,不同操作系统的激活命令不同。
Windows系统激活
在命令提示符或者PowerShell中执行:
# 命令提示符 venvScriptsactivate.bat # PowerShell venvScriptsActivate.ps1
Linux/macOS系统激活
在终端中执行:
source venv/bin/activate
激活成功后,终端的提示符前面会出现(venv)的标识,说明当前已经处于虚拟环境中。
在虚拟环境中执行Python脚本
激活虚拟环境后,直接运行Python脚本即可,此时使用的是虚拟环境内的Python解释器和依赖库。
执行普通Python脚本
假设项目目录下有一个test.py脚本,内容如下:
import sys
# 打印当前Python解释器路径
print("当前Python解释器路径:", sys.executable)
# 打印已安装的第三方库
import pkg_resources
installed_packages = pkg_resources.working_set
for package in installed_packages:
print(package.project_name, package.version)
在激活虚拟环境的终端中执行:
python test.py
输出的Python解释器路径会指向venv目录下的python.exe,此时安装的第三方库也只会存在于虚拟环境中。
安装依赖后执行脚本
如果脚本需要第三方库,比如需要requests库,先在虚拟环境中安装:
pip install requests
修改test.py内容:
import requests
response = requests.get("http://ipipp.com")
print("请求状态码:", response.status_code)
再次执行python test.py,就能正常发送请求,且requests库只安装在当前虚拟环境中,不会影响全局环境。
退出虚拟环境
当不需要使用虚拟环境时,执行以下命令退出:
deactivate
退出后终端的(venv)标识会消失,后续执行的Python命令会使用全局环境。
虚拟环境依赖管理
为了方便其他开发者复现项目环境,可以将虚拟环境中的依赖导出为文件,其他人拿到文件后可以一键安装所有依赖。
导出依赖列表:
pip freeze > requirements.txt
其他人拿到项目后,创建并激活虚拟环境,执行以下命令安装所有依赖:
pip install -r requirements.txt
常见问题说明
- 如果激活虚拟环境时提示权限不足,Windows PowerShell可以执行
Set-ExecutionPolicy RemoteSigned修改执行策略,Linux/macOS可以给激活脚本添加执行权限chmod +x venv/bin/activate - 虚拟环境文件夹不需要提交到代码仓库,可以在
.gitignore中添加venv忽略该目录 - 如果删除虚拟环境,直接删除venv文件夹即可,不会影响项目代码