来源:网络
venv 是 Python 官方自带的一个"沙盒",让每个项目拥有独立的包空间,互不干扰。不需要安装任何额外软件,Python 3.3 以后自带,开箱即用。
没有 venv 的 Python:
系统 Python├── requests 2.28 ← 项目A要的版本├── requests 2.31 项目B升级了!覆盖了!├── flask 2.0 ← 项目A要的版本├── flask 3.0 项目B又升级了!又覆盖了!├── numpy 1.21├── numpy 1.24└── ...越装越乱,最终崩溃
因为全局只有一个 site-packages,后装的覆盖先装的,就会导致原来能跑的项目,过几个月或者几周就跑不了了。
有 venv 的 Python (各管各的):
项目A/├── venv/│ └── Lib/site-packages/│ ├── requests 2.28│ ├── flask 2.0│ └── numpy 1.21项目B/├── venv/│ └── Lib/site-packages/│ ├── requests 2.31│ ├── flask 3.0│ └── numpy 1.24
两个项目各自创建管理自己的venv(虚拟环境),想装什么装什么,互不打扰。
venv 就是一个文件夹!创建一个虚拟环境(venv)本质上是创建了一个 venv 文件夹。
myproject/├── venv/ <-- 就多了这个文件夹│ ├── Include/ ← C语言头文件存放处(.h 文件),一般情况下用不到│ ├── Scripts/ ← Windows 下│ │ ├── python.exe ← 复制了一份 Python 解释器│ │ ├── pip.exe ← 复制了一份 pip│ │ ├── activate.bat ← 激活脚本│ │ └── deactivate.bat ← 退出脚本│ ├── Lib/│ │ └── site-packages/ ← 放包的地方│ └── pyvenv.cfg ← 配置文件(记录原始Python路径)
关键点:
python.exe 和 pip.exe 不是真正的拷贝,而是一个快捷方式/链接,指向你系统的 Python。如果你卸载了系统的 Python,所有 venv 都会失效!
所以 venv 文件夹其实很小,大概只有几 MB。
site-packages 里面什么都没有,只有两个pip文件夹(因为 pip 本身就是一个 Python 包),需要其它包得自己 pip install。
# 创建 venv(前一个venv表示指令关键字,后一个venv表示生成的文件夹名称)python -m venv venv# 激活 venvvenv\Scripts\activate # Windowssource venv/bin/activate # Mac/Linux# 激活后的样子(venv) D:\myproject> <-- 前面多了 (venv)# 装包(只装在这个环境里)pip install requests flask# 退出 venvdeactivate# 删除 venv(直接删文件夹就行)# 关闭所有相关程序 → 直接删除 venv 文件夹
PyCharm 中创建和管理 venv(虚拟环境)的方法。
新建项目时自动创建
步骤:File -> New Project
设置:
结果:PyCharm 会自动在项目文件夹下生成一个 venv 文件夹,并把 Python 解释器复制进去。
已有项目如何补建 venv?
如果你打开了一个旧项目,发现没有 venv,或者环境乱了,不用删项目重建。
步骤:
打开设置:File -> Settings。
找到解释器设置。
点击右上角的 Add Interpreter(添加解释器)。
选择 Add Local Interpreter(添加本地解释器)。
环境选择左侧的“生成新的”。
Location(位置):填你的项目路径\venv。
Base interpreter(基础解释器):选你系统里正常的 Python 版本。
点击 OK。
手动创建:如果用以上方式创建venv失败(弹窗Failed to create virtual environment),怎么也解决不了,可以尝试手动创建venv。
在 cmd 里进入你的项目文件夹(比如 D:\my_project):cd D:\my_project。
手动输入命令创建 venv:python -m venv venv。
创建成功后项目里多出一个venv文件里面是include,lib,script 和 pyvenv。
然后用Pycharm打开项目文件夹,设置解释器时,File → Settings → Python → Interpreter → Add Existing → 选择刚刚创建的venv\Scripts\python.exe。