Python的虚拟环境
文章目录
- 环境
- Python虚拟环境简介
- 实现方式
- venv
- 创建虚拟环境
- 激活虚拟环境
- 安装包
- VSCode
- requirement.txt
- 解除激活
- 参考
环境
- Windows 11 专业版
- Python 3.13.3
- PowerShell 7.5.1
- VSCode 1.100.1
Python虚拟环境简介
Python虚拟环境(Virtual Environment)是一个独立的Python运行环境,允许你在同一台机器上为不同项目创建隔离的Python工作空间。
这样,不同项目可以使用不同版本的Python包,比如,项目A使用 numpy==1.21
版本,同时项目B使用 numpy==2.0
版本,两个项目可以同时并存。
此外,可以精确记录项目所需的依赖,便于在其它环境部署(通常使用 requirements.txt
文件)。
实现方式
Python有几种创建虚拟环境的方式:
- venv:Python 3.3+内置
- virtualenv:第三方工具,支持Python 2和3
- conda:Anaconda/Miniconda提供
本文只介绍 venv
方式。
venv
新建一个目录(比如 test0527
)作为项目的根目录。
创建虚拟环境
在该目录下运行:
python -m venv <env name>
即可创建一个本地虚拟环境。
比如:
PS C:\temp\test0527> python -m venv .venv
就在本地创建了一个 .venv
目录。
注:我使用的是Windows下的PowerShell。
激活虚拟环境
运行 .\.venv\Scripts\activate
来激活该虚拟环境:
PS C:\temp\test0527> .\.venv\Scripts\activate
(.venv) PS C:\temp\test0527>
可见,虚拟环境激活后,在命令行最左边出现了 (.venv)
提示,表示你当前正在使用的虚拟环境名称。
注:若要解除激活,直接运行 deactivate
即可,因为激活时,已经把所在目录放在路径里了。
现在,查看一下 python
和 pip
命令:
(.venv) PS C:\temp\test0527> where.exe python
C:\temp\test0527\.venv\Scripts\python.exe
C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps\python.exe
(.venv) PS C:\temp\test0527> where.exe pip
C:\temp\test0527\.venv\Scripts\pip.exe
C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps\pip.exe
注:可用 where.exe
或者 get-command
命令,二者略有不同。
可见,会用虚拟环境里的 python
和 pip
了。
安装包
接下来,在虚拟环境里安装包,比如:
pip install openai
确认安装:
(.venv) PS C:\temp\test0527> pip list
Package Version
----------------- ---------
annotated-types 0.7.0
anyio 4.9.0
certifi 2025.4.26
colorama 0.4.6
distro 1.9.0
h11 0.16.0
httpcore 1.0.9
httpx 0.28.1
idna 3.10
jiter 0.10.0
openai 1.82.0
pip 25.0.1
pydantic 2.11.5
pydantic_core 2.33.2
sniffio 1.3.1
tqdm 4.67.1
typing_extensions 4.13.2
typing-inspection 0.4.1
可见,已经包含openai了。此时在虚拟环境之外(比如再开一个shell),运行 pip install
,则不会显示openai。
VSCode
在VSCode里,新建窗口,打开目录 test0527
,创建文件 test1.py
如下:
from openai import OpenAI# for backward compatibility, you can still use `https://api.deepseek.com/v1` as `base_url`.
client = OpenAI(api_key="sk-xxxxxxx", base_url="https://api.deepseek.com")response = client.chat.completions.create(model="deepseek-chat",messages=[{"role": "system", "content": "You are a helpful assistant"},{"role": "user", "content": "Hello"},],max_tokens=1024,temperature=0.7,stream=False
)print(response.choices[0].message.content)
注:这里的API key使用了 xxxxxxx
,更常见的做法是把敏感信息放在环境变量里,然后代码从环境变量读取信息。
运行文件,报错:
ModuleNotFoundError: No module named 'openai'
不是已经安装 openai
包了吗,为什么还报错呢?
这是因为,在VSCode的环境里,还没有激活虚拟环境。
按 Ctrl
+ Shift
+ P
,然后选择 Python: Select Interpreter
,接下来选择虚拟环境里的Python,如下图所示:
可以看到,右下角已经显示出Python版本和虚拟环境:
现在,再运行代码,就OK了。
注:这里的命令行,最左边并没有显示虚拟环境名称,但实际上已经激活了。
requirement.txt
在当前环境下,运行:
pip freeze > requirements.txt
生成 requirements.txt
文件,里面包含了项目所依赖的包:
annotated-types==0.7.0
anyio==4.9.0
certifi==2025.4.26
colorama==0.4.6
distro==1.9.0
h11==0.16.0
httpcore==1.0.9
httpx==0.28.1
idna==3.10
jiter==0.10.0
openai==1.82.0
pydantic==2.11.5
pydantic_core==2.33.2
sniffio==1.3.1
tqdm==4.67.1
typing-inspection==0.4.1
typing_extensions==4.13.2
把该文件复制到另外一个新创建的环境里,运行:
pip install -r requirements.txt
即可一键安装所有依赖。
解除激活
运行 deactivate
命令可解除虚拟环境的激活状态。
参考
pip help
pip help xxx