python不同版本的切换创建虚拟环境
cd D:\keil5\projectstm32\opencv_student\SmartHome-AI# 进项目目录D:\python12\python.exe-m venv v1# 创建虚拟环境.\v1\Scripts\activate# 激活虚拟环境pip install-r requirements.txt# 安装依赖python main.py# 运行项目第 1 行:cd D:\keil5\projectstm32\opencv_student\SmartHome-AI
作用
把当前目录切换到项目文件夹。
为什么要切换
venv创建虚拟环境时,会在当前目录下生成一个文件夹。所以先进入项目目录,虚拟环境就直接建在项目里,方便管理。
执行后效果
PowerShell 提示符会变成:
PowerShell
PSD:\keil5\projectstm32\opencv_student\SmartHome-AI>第 2 行:D:\python12\python.exe -m venv v1
作用
用D:\python12里的 Python,在当前目录创建一个名为v1的虚拟环境。
拆开看
| 部分 | 含义 |
|---|---|
D:\python12\python.exe | 指定用哪个 Python 解释器 |
-m venv | 调用 Python 内置的venv模块 |
v1 | 虚拟环境文件夹的名字,可以改 |
执行后效果
项目目录里会多出一个v1文件夹,结构大概这样:
SmartHome-AI/ ├── v1/ │ ├── Scripts/ │ │ ├── activate # 激活脚本 │ │ ├── python.exe # 虚拟环境专用的 Python │ │ ├── pip.exe # 虚拟环境专用的 pip │ ├── Lib/ │ │ └── site-packages/ # 装的第三方库都在这里 │ └── pyvenv.cfg # 虚拟环境配置 ├── main.py ├── requirements.txt └── ...关键点
v1里的 Python 其实是D:\python12\python.exe的一个副本/引用- 在
v1里安装的库,不会影响D:\python12本身 - 不同项目可以创建不同的虚拟环境,互不干扰
第 3 行:.\v1\Scripts\activate
作用
激活虚拟环境。
执行后效果
PowerShell 提示符前面会多一个(v1):
PowerShell
(v1)PSD:\keil5\projectstm32\opencv_student\SmartHome-AI>这表示当前已经进入了v1虚拟环境。
激活后发生了什么
- 你输入
python时,实际调用的是v1\Scripts\python.exe - 你输入
pip时,实际调用的是v1\Scripts\pip.exe - 安装的库会装进
v1\Lib\site-packages
第 4 行:pip install -r requirements.txt
作用
在激活的虚拟环境里,安装项目所需依赖。
拆开看
| 部分 | 含义 |
|---|---|
pip | 调用虚拟环境里的 pip |
install | 安装 |
-r requirements.txt | 读取 requirements.txt 文件,按列表安装 |
执行后效果
pip 会依次下载并安装:
mediapipenumpyopencv-contrib-pythonPillowPySide6PyInstaller
这些库都会被装进:
D:\keil5\projectstm32\opencv_student\SmartHome-AI\v1\Lib\site-packages\第 5 行:python main.py
作用
用虚拟环境里的 Python 运行项目主程序。
为什么现在可以直接写python
因为虚拟环境已经激活了,python自动指向v1\Scripts\python.exe。
以后怎么再次运行?
只需两步:
PowerShell
cd D:\keil5\projectstm32\opencv_student\SmartHome-AI.\v1\Scripts\activate python main.py如果虚拟环境已经创建好并装过依赖,直接激活运行即可。
怎么退出虚拟环境?
输入:
PowerShell
deactivate