[Python] 创建和管理虚拟环境 (venv)

目录
您好,我是系统解决方案部的犬冢牙。
这次我们将使用 Python 的 venv 创建一个虚拟环境。
什么是 venv?
venv 是 3.3 版本中添加的一个模块,用于在基础 Python 之上创建轻量级的 Python 虚拟环境。
使用虚拟环境,您可以按项目安装 Python 包,而不是按系统范围安装。
这意味着您可以为每个项目使用不同的版本和软件包,并且可以启动其他项目而无需担心依赖关系的影响。
从 3.5 版本开始,建议使用 venv 创建虚拟环境(截至 2023 年 8 月)。
试着自己做一下
现在我们来试一试。
如果您使用的是 3.3 或更高版本,则此为标准功能,无需额外安装。
这次我使用的是 Windows 系统上的 Python 3.11.0。
python -V Python 3.11.0
创建虚拟环境
为了方便起见,创建一个名为 test_dir 的目录,并在其中创建一个虚拟环境。
在 Linux 上创建虚拟环境的命令 (python -m venv) 是相同的。
为了简化虚拟环境的管理,我们将创建一个名为 myenv1 的虚拟环境。
mkdir test_dir cd test_dir python -m venv myenv1
为了便于查看,部分列已被隐藏,但 venv 的内容如下所示。
由于本次我们只关注用法,因此不会深入讲解细节,但这些是配置虚拟环境的重要目录/文件,请勿随意更改。
ls myenv1 目录:C:\Users\ichik\test_dir\myenv1 模式 最后写入时间 名称 ---- ------------- ---- d---- 2023/08/28 13:30 Include d---- 2023/08/28 13:30 Lib d---- 2023/08/28 13:30 Scripts -a---- 2023/08/28 13:30 pyvenv.cfg
激活虚拟环境
使用以下命令激活虚拟环境:
执行后,如果提示符开头显示了环境名称,则激活成功。
.\myenv1\Scripts\Activate.ps1 (myenv1) PS C:\Users\ichik\test_dir>
*根据执行环境的不同,命令也会有所不同,请参考下表。
| 平台 | 壳 | 激活虚拟环境的命令 |
|---|---|---|
| POSIX | bash/zsh | 来源 |
| 鱼 | 来源 |
|
| csh/tcsh | 来源 |
|
| PowerShell | $ |
|
| 视窗 | cmd.exe | C:\> |
| PowerShell | PS C:\> |
虽然会显示环境名称,但会执行虚拟环境中的 Python 代码,而不是基础 Python 代码。
请注意,当您以标准方式创建虚拟环境时,虚拟环境的 Python 版本与基础 Python 版本相同。
python -V Python 3.11.0
如上所述,虚拟环境中的软件包是相互独立的,因此您可以根据自己的喜好进行安装。
禁用虚拟环境
使用以下命令停用虚拟环境:
(myenv1) PS C:\Users\ichik\test_dir> deactivate
如果不再需要虚拟环境,可以删除该目录。
例如:我想复制并重用一个虚拟环境
例如,如果您在另一台电脑上使用它,或者与他人共享它进行开发,则不会复制和重用虚拟环境本身。
创建软件包列表,并使用 git 或类似工具将其与源代码一起共享。
您可以使用以下命令输出软件包列表:
(myenv1) PS C:\Users\ichik\test_dir> python -m pip freeze > requirements.txt
接下来,在新启动的虚拟环境中运行以下命令,一次性安装所有软件包。
(myenv1) PS C:\Users\ichik\test_dir> python -m pip install -r requirements.txt
例2)我想启动一个不同版本(Windows)的虚拟环境。
您也可以安装任意版本来启动具有不同版本的虚拟环境。
首先,请检查您已安装的版本。
py --list -V:3.11 * Python 3.11 (64 位) -V:3.9 Python 3.9 (64 位)
这次我们将使用 Python 3.9 开始一个新项目。
py -3.9 -m venv pyenv39 .\pyenv39\Scripts\Activate.ps1
虚拟环境的上线版本与基础版本不同!
(pyenv39) PS C:\Users\ichik\test_dir> python -V Python 3.9.13
然后,您可以引用源代码和 requirements.txt 文件,运行 pip install 命令,以不同的版本运行该程序。
概括
- venv 是 3.3 版本中添加的一个模块,用于在基础 Python 之上创建轻量级的 Python 虚拟环境。
- 不同的项目可以使用不同的版本和软件包。
- 您可以启动其他项目,而无需担心依赖关系。
感谢观看。
4