[Python] 创建和管理虚拟环境(venv)
目录
大家好,我是系统解决方案部的犬好。
这次,我们将使用Python的venv创建一个虚拟环境。
什么是 venv?
venv 是 3.3 版本中添加的一个模块,用于在基础 Python 上创建轻量级 Python 虚拟环境。
通过使用虚拟环境,您可以逐个项目安装 Python 包,而不是在系统范围内安装。
这允许您为每个项目使用不同的版本和包,并启动其他项目,而无需考虑依赖关系的影响。
从版本 3.5 开始,建议使用 venv 创建虚拟环境。 (截至2023/08)
实际上做到了
现在我们来尝试一下。
如果您使用的是 3.3 或更高版本,则这是标准功能,因此无需额外安装。
这次我在 Windows 上使用 Python 3.11.0。
python -V Python 3.11.0
创建虚拟环境
为了方便起见,创建一个名为 test_dir 的目录并在其中创建一个虚拟环境。
创建 venv (python -m venv) 的命令与 Linux 上相同。
创建名称为myenv1,方便虚拟环境的管理。
mkdir test_dir cd test_dir python -m venv myenv1
为了方便查看,有些列被隐藏了,但 venv 的内容如下。
这次我们将重点介绍如何使用它,因此我们将省略细节,但这些目录/文件对于配置虚拟环境很重要,因此请不要轻易更改它们。
ls myenv1 目录:C:\Users\ichik\test_dir\myenv1 模式 LastWriteTime 名称 ---- ------------- ---- d----- 2023/08/28 13 :30 包含 d---- 2023/08/28 13:30 库 d---- 2023/08/28 13:30 脚本 -a---- 2023/08/28 13:30 pyvenv.cfg
启用虚拟环境
使用以下命令启用虚拟环境。
执行后,如果提示符开头显示环境名称,则已成功启用。
.\myenv1\Scripts\Activate.ps1 (myenv1) PS C:\Users\ichik\test_dir>
*命令因执行环境而异,请参考下表。
平台 | 壳 | 启用虚拟环境的命令 |
---|---|---|
POSIX | bash/zsh | $ 来源 /bin/激活 |
鱼 | $ 来源 /bin/activate.fish |
|
csh/tcsh | $ 来源 /bin/activate.csh |
|
电源外壳 | $ /bin/激活.ps1 |
|
视窗 | 执行程序 | C:\> \脚本\activate.bat |
电源外壳 | PS C:\> \脚本\Activate.ps1 |
显示环境名称时,将执行虚拟环境 Python 而不是基本 Python。
请注意,创建标准 venv 时,虚拟环境的 Python 版本和基础 Python 版本是相同的。
python -V Python 3.11.0
前面说过,虚拟环境上的包是独立的,你只需按照自己的喜好安装即可使用。
禁用虚拟环境
使用以下命令停用虚拟环境。
(myenv1) PS C:\Users\ichik\test_dir> 停用
如果不再需要虚拟环境本身,删除整个目录也没有问题。
ex ) 我想复制并重用虚拟环境
例如,如果您想在不同的PC上使用它或与其他人共享它进行开发,您将不会复制和重用venv本身。
创建包列表并使用 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 -rrequirements.txt
ex2 ) 我想启动一个不同版本的虚拟环境(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 虚拟环境
- 不同的项目可以使用不同的版本和包
- 可以启动其他项目而不必考虑依赖关系的影响。
感谢您的观看。