使用
venv为每个 Python 项目创建独立的运行环境和依赖隔离。
不同项目可能依赖不同版本的软件包。
例如:
项目 A:FastAPI 0.115
项目 B:FastAPI 0.95
如果所有依赖都安装到系统 Python 中,可能导致:
推荐原则:
一个 Python 项目,对应一个 .venv 虚拟环境。
进入项目目录:
cd my-project
创建名为 .venv 的虚拟环境:
python -m venv .venv
Ubuntu 通常使用:
python3 -m venv .venv
指定 Python 版本创建:
python3.12 -m venv .venv
创建后,目录结构大致如下:
my-project/
├── .venv/
├── main.py
└── requirements.txt
推荐统一使用
.venv作为虚拟环境目录名称。VS Code 通常能自动识别它。
.venv\Scripts\activate.bat
.venv\Scripts\Activate.ps1
source .venv/bin/activate
成功激活后,终端前方通常会显示:
(.venv)
例如:
(.venv) C:\Projects\my-project>
或:
(.venv) user@server:~/my-project$
deactivate
退出后,终端前面的 (.venv) 会消失。
激活虚拟环境后执行:
python -c "import sys; print(sys.executable)"
Windows 示例:
C:\Projects\my-project\.venv\Scripts\python.exe
Ubuntu 示例:
/home/user/my-project/.venv/bin/python
确认 pip:
python -m pip --version
输出路径中应包含:
.venv
先激活虚拟环境:
source .venv/bin/activate
再安装软件包:
python -m pip install requests
安装多个软件包:
python -m pip install fastapi uvicorn pandas
查看已安装软件包:
python -m pip list
虚拟环境不需要提交到 Git,也不需要手动备份。
如果环境损坏或 Python 版本需要调整,可以删除后重建。
Windows:
rmdir /s /q .venv
PowerShell:
Remove-Item -Recurse -Force .venv
Ubuntu:
rm -rf .venv
重新创建并安装依赖:
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
在项目的 .gitignore 中加入:
.venv/
venv/
__pycache__/
*.py[cod]
不要将 .venv/ 提交到 Git 仓库。
应提交的是:
requirements.txt
或其他依赖定义文件。
在 VS Code 中打开项目目录后:
按下 Ctrl + Shift + P;
输入并选择:
Python: 选择解释器
选择项目中的解释器:
.venv\Scripts\python.exe
或:
.venv/bin/python
选择成功后,VS Code 右下角会显示当前 Python 解释器。
可能看到类似错误:
running scripts is disabled on this system
可在 PowerShell 中执行:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
然后重新打开终端并激活:
.venv\Scripts\Activate.ps1
如果不希望调整 PowerShell 策略,也可以使用 CMD:
.venv\Scripts\activate.bat
若出现类似错误:
The virtual environment was not created successfully
安装对应组件:
sudo apt update
sudo apt install -y python3-venv
再重新创建:
python3 -m venv .venv
.venv确认:
.py 文件;.venv 已成功创建;Python: Select Interpreter;pip 仍安装到系统环境使用以下形式安装,避免直接调用不明确的 pip:
python -m pip install <package-name>
并确认:
python -c "import sys; print(sys.executable)"
python -m pip --version
两个输出路径都应包含 .venv。