python 虚拟环境操作
Python virtualenv 打造干净的开发环境
作为开发者,我们经常需要在不同项目间切换,而不同项目可能依赖不同版本的 Python 库,甚至不同版本的 Python 解释器。virtualenv 就是解决这个问题的利器——它能为每个项目创建独立的虚拟环境,避免依赖冲突。这篇笔记整理了 virtualenv 的核心用法,方便日常速查。
一、什么是 virtualenv?
virtualenv 是一个 Python 工具,用于创建隔离的虚拟环境。每个虚拟环境都有自己的 Python 解释器和独立的依赖库目录,不同环境间的依赖互不干扰。
核心作用:
- 避免全局环境被各种项目依赖污染
- 解决“项目A需要库1.0,项目B需要库2.0”的冲突问题
- 方便项目依赖的移植和共享
二、安装 virtualenv
首先需要在全局环境安装 virtualenv(仅需一次):
# 使用 pip 安装
pip install virtualenv
# 若系统同时有 Python2 和 Python3,指定 Python3 的 pip
pip3 install virtualenv
验证安装是否成功:
virtualenv --version # 输出版本号即安装成功
三、基本使用流程
1. 创建虚拟环境
进入项目目录,执行以下命令创建虚拟环境(默认使用当前系统的 Python 版本):
# 在当前目录创建名为 venv 的虚拟环境(推荐用 venv 作为目录名,方便识别)
virtualenv venv
自定义参数:
- 指定 Python 版本(需系统已安装对应版本):
virtualenv -p /usr/bin/python3.9 venv # 使用 Python3.9 virtualenv -p /usr/bin/python2.7 venv # 使用 Python2.7 - 创建不含全局 site-packages 的环境(完全隔离):
virtualenv --no-site-packages venv
2. 激活虚拟环境
创建后需要激活环境才能使用(不同操作系统激活命令不同):
- Windows 系统(cmd 终端):
venv\Scripts\activate.bat - Windows 系统(PowerShell):
.\venv\Scripts\Activate.ps1 - Mac/Linux 系统(bash/zsh):
source venv/bin/activate
激活成功后,终端提示符前会显示 (venv),表示当前处于虚拟环境中。
3. 在虚拟环境中工作
激活后,所有 python 和 pip 命令都会指向当前虚拟环境:
# 安装依赖(仅在当前环境生效)
pip install requests==2.25.1 # 安装指定版本
pip install -r requirements.txt # 从文件安装依赖
# 查看当前环境的依赖
pip list
pip freeze # 更简洁的依赖列表(常用于导出)
4. 导出依赖列表
项目开发完成后,导出当前环境的依赖,方便他人复现:
pip freeze > requirements.txt # 将依赖写入文件
生成的 requirements.txt 可提交到代码仓库,他人拿到后只需在自己的虚拟环境中执行:
pip install -r requirements.txt # 安装所有依赖
5. 退出虚拟环境
完成工作后,退出虚拟环境:
deactivate
退出后,终端提示符前的 (venv) 消失,python 和 pip 回到全局环境。
6. 删除虚拟环境
若需删除虚拟环境,直接删除对应的目录即可(无需额外命令):
# Mac/Linux
rm -rf venv
# Windows
rmdir /s /q venv
四、常见问题与技巧
-
忘记激活环境?
若直接在全局环境安装依赖,可删除全局安装的包(pip uninstall 包名),激活虚拟环境后重新安装。 -
虚拟环境路径问题?
虚拟环境目录(如venv)应加入.gitignore,避免提交到代码仓库(只需共享requirements.txt)。 -
更便捷的工具?
virtualenv 的增强版virtualenvwrapper可简化环境管理(如无需记路径,用workon 环境名切换),感兴趣可自行了解。 -
Python3.3+ 内置替代方案?
Python3.3 以上自带venv模块(python -m venv venv),用法与 virtualenv 类似,可根据需求选择。
五、速查命令表
| 操作 | 命令(Mac/Linux) | 命令(Windows cmd) |
|---|---|---|
| 安装 virtualenv | pip3 install virtualenv | pip install virtualenv |
| 创建环境 | virtualenv venv | virtualenv venv |
| 激活环境 | source venv/bin/activate | venv\Scripts\activate.bat |
| 安装依赖 | pip install 包名 | pip install 包名 |
| 导出依赖 | pip freeze > requirements.txt | pip freeze > requirements.txt |
| 安装导出的依赖 | pip install -r requirements.txt | pip install -r requirements.txt |
| 退出环境 | deactivate | deactivate |
| 删除环境 | rm -rf venv | rmdir /s /q venv |
通过 virtualenv 管理项目环境,能让开发更规范、减少依赖冲突。
延伸:跨平台一键进入虚拟环境并运行 main.py 的方案
在开发中,每次启动项目都要手动激活虚拟环境再执行脚本,略显繁琐。下面提供 Windows、Mac、Linux 平台的「一键启动」方案,用一条命令或一个脚本搞定激活环境 + 运行程序的流程。
一、Windows 平台:使用批处理脚本(.bat)
1. 适用场景
- 虚拟环境目录为项目根目录下的
venv - 脚本文件为项目根目录下的
main.py
2. 实现步骤
在项目根目录创建 start.bat 文件,写入以下内容:
@echo off
:: 检查虚拟环境是否存在
if not exist "venv\Scripts\python.exe" (
echo 错误:未找到虚拟环境,请先创建 venv
pause
exit /b 1
)
:: 检查 main.py 是否存在
if not exist "main.py" (
echo 错误:未找到 main.py
pause
exit /b 1
)
:: 激活虚拟环境并运行脚本
echo 正在激活虚拟环境...
call venv\Scripts\activate.bat
echo 正在运行 main.py...
python main.py
:: 运行结束后保持窗口(可选,按任意键关闭)
echo 程序运行结束
pause
3. 使用方法
双击 start.bat 即可自动激活环境并运行 main.py,运行结束后窗口会停留(按任意键关闭)。
二、Mac/Linux 平台:使用 Shell 脚本(.sh)
1. 实现步骤
在项目根目录创建 start.sh 文件,写入以下内容:
#!/bin/bash
# 检查虚拟环境是否存在
if [ ! -f "venv/bin/python" ]; then
echo "错误:未找到虚拟环境,请先创建 venv"
exit 1
fi
# 检查 main.py 是否存在
if [ ! -f "main.py" ]; then
echo "错误:未找到 main.py"
exit 1
fi
# 激活虚拟环境并运行脚本
echo "正在激活虚拟环境..."
source venv/bin/activate
echo "正在运行 main.py..."
python main.py
# 运行结束后退出环境(可选)
deactivate
echo "程序运行结束"
2. 赋予执行权限
首次使用前需要给脚本加权限:
chmod +x start.sh
3. 使用方法
在终端中执行:
./start.sh
三、跨平台通用:使用 Python 脚本自动判断环境
如果需要一个脚本适配所有系统,可以用 Python 自身判断操作系统,自动执行对应命令:
在项目根目录创建 run.py,写入以下内容:
import os
import sys
import subprocess
# 虚拟环境目录和目标脚本
VENV_DIR = "venv"
TARGET_SCRIPT = "main.py"
def main():
# 检查目标脚本是否存在
if not os.path.exists(TARGET_SCRIPT):
print(f"错误:未找到 {TARGET_SCRIPT}")
sys.exit(1)
# 根据系统选择激活命令和 Python 路径
if sys.platform.startswith("win"):
# Windows 系统
python_path = os.path.join(VENV_DIR, "Scripts", "python.exe")
activate_cmd = os.path.join(VENV_DIR, "Scripts", "activate.bat")
else:
# Mac/Linux 系统
python_path = os.path.join(VENV_DIR, "bin", "python")
activate_cmd = f"source {os.path.join(VENV_DIR, 'bin', 'activate')}"
# 检查虚拟环境是否存在
if not os.path.exists(python_path):
print(f"错误:未找到虚拟环境,请先创建 {VENV_DIR}")
sys.exit(1)
# 构造命令(先激活环境,再运行脚本)
if sys.platform.startswith("win"):
# Windows 用 cmd 执行
cmd = f'cmd /k "{activate_cmd} && python {TARGET_SCRIPT} && pause"'
else:
# Mac/Linux 用 bash 执行
cmd = f'bash -c "{activate_cmd} && python {TARGET_SCRIPT}"'
# 执行命令
subprocess.run(cmd, shell=True)
if __name__ == "__main__":
main()
使用方法
直接在项目根目录运行(无需提前激活环境):
# Windows
python run.py
# Mac/Linux
python3 run.py
四、进阶技巧:添加到系统 PATH(快速启动)
如果需要在任意目录通过命令启动项目,可将项目目录添加到系统 PATH,再配合脚本使用:
-
Windows:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」的 PATH 中添加项目根目录路径
- 之后在任意 cmd 窗口输入
start.bat即可启动
-
Mac/Linux:
- 编辑
~/.bashrc或~/.zshrc,添加:export PATH="$PATH:/path/to/your/project" - 生效配置:
source ~/.bashrc(或对应配置文件) - 之后在任意终端输入
start.sh即可启动
- 编辑
通过以上方案,可大幅简化日常启动项目的操作,尤其适合频繁切换项目的场景。根据自己的系统选择对应方案即可~

浙公网安备 33010602011771号