logo

该视频仅会员有权观看

立即开通课程「Python 入门」权限。

¥
199
/ 年

虚拟环境

我们在开发 Python 项目的时候,不同的项目可能需要使用的 Python 版本和包是不一样的,如果我们在同一台机器上同时开发多个项目,这时就会出现包之间的冲突,为了解决这个问题,我们可以使用虚拟环境。

虚拟环境是 Python 的一个重要概念,它可以帮助我们在同一台机器上创建多个独立的 Python 运行环境,每个虚拟环境都有自己独立的 Python 解释器和包,这样就可以避免包之间的冲突。

Python 提供了 venv 模块来创建虚拟环境,我们可以使用 venv 模块来创建、激活和退出虚拟环境,下面我们就来看看如何使用 venv 模块。

创建虚拟环境

首先当然需要安装 Python,然后我们可以使用 venv 模块来创建虚拟环境,比如我们来创建一个名为 myenv 的虚拟环境:

python3 -m venv myenv

上面的命令表示使用 Python3 解释器的 venv 模块来创建一个名为 myenv 的虚拟环境,执行完毕后会在当前目录下创建一个 myenv 目录,这个目录就是我们的虚拟环境。

$ tree -L 2 myenv myenv ├── bin │ ├── Activate.ps1 │ ├── activate │ ├── activate.csh │ ├── activate.fish │ ├── pip │ ├── pip3 │ ├── pip3.12 │ ├── python -> python3.12 │ ├── python3 -> python3.12 │ └── python3.12 -> /Library/Frameworks/Python.framework/Versions/3.12/bin/python3.12 ├── include │ └── python3.12 ├── lib │ └── python3.12 └── pyvenv.cfg 5 directories, 11 files

这其实就是一个独立的 Python 运行环境,里面包含了一个独立的 Python 解释器和一些基本的包。

激活虚拟环境

要激活虚拟环境,我们可以执行 bin 目录下的 activate 脚本,比如在 Linux 或 macOS 下可以这样来激活虚拟环境:

source myenv/bin/activate

在 Windows 下可以这样来激活虚拟环境:

myenv\Scripts\activate.bat

激活虚拟环境后,我们可以看到命令行的提示符前面会有虚拟环境的名字,表示当前虚拟环境已经激活,这时我们安装的包都会安装到当前虚拟环境中,而不会影响到系统的 Python 环境。

$ source myenv/bin/activate (myenv) $

现在我们可以在虚拟环境中安装包,比如我们可以安装 Flask 包:

pip3 install Flask

安装完毕后,我们可以使用 pip list 命令来查看当前虚拟环境中安装的包:

(myenv) $ pip3 list Package Version ------------ ------- blinker 1.8.2 click 8.1.7 Flask 3.0.3 itsdangerous 2.2.0 Jinja2 3.1.4 MarkupSafe 2.1.5 pip 24.0 Werkzeug 3.0.3

这些包都是安装在当前虚拟环境中的,不会影响到系统的 Python 环境。

如果是 VSCode 的话,可以在 VSCode 中选择使用 ./myenv/bin/python 做为当前项目的虚拟环境,这样就可以在 VSCode 中使用虚拟环境中的 Python 解释器和包了。

选择解释器

退出虚拟环境

要退出虚拟环境,我们可以执行 deactivate 命令,比如在 Linux 或 macOS 下可以这样来退出虚拟环境:

deactivate

在 Windows 下可以这样来退出虚拟环境:

myenv\Scripts\deactivate

退出虚拟环境后,命令行的提示符前面就不会有虚拟环境的名字了,表示当前虚拟环境已经退出。

$ deactivate $

当然现在如果用 pip3 list 命令来查看当前环境中安装的包,就会发现当前环境中没有安装 Flask 包了,当前环境就是系统的 Python 环境。

删除虚拟环境

如果我们不再需要某个虚拟环境,可以直接删除对应的目录,比如我们可以这样来删除 myenv 虚拟环境:

rm -rf myenv

这样就可以删除虚拟环境了。

总结

不过 venv 模块只能创建 Python 3.3 以上版本的虚拟环境,而且只能使用系统自带的 Python 解释器来创建虚拟环境,如果我们的项目想使用不同版本的 Python 解释器,则可以使用其他的虚拟环境管理工具,比如 dockervirtualenvcondapyenvPoetry 等,这些工具都可以用来创建虚拟环境,管理包依赖,但是使用方法可能会有所不同,大家可以根据自己的需求来选择。