Python-虚拟环境


Python 虚拟环境在项目目录中创建 Python 的虚拟安装。然后,用户可以为每个项目安装和管理 Python 包。这使得用户能够安装软件包并修改他们的 Python 环境,而不必担心破坏其他环境中安装的软件包。

在本章中,您将了解Python中的虚拟环境是什么,以及如何创建和使用虚拟环境来构建Python应用程序。

当您在计算机上安装 Python 软件时,可以从文件系统中的任何位置使用它。这是系统范围的安装。

在 Python 中开发应用程序时,可能需要使用 pip 实用程序安装一个或多个库(例如pip3 install somelib)。此外,应用程序(假设为 App1)可能需要特定版本的库 - 假设为somelib 1.0。同时,另一个 Python 应用程序(例如 App2)可能需要同一库的较新版本,例如somelib 2.0。因此,通过安装新版本,由于同一库的两个不同版本之间的冲突,App1 的功能可能会受到损害。

通过在同一台机器上提供两个隔离的Python环境可以避免这种冲突。这些称为虚拟环境。虚拟环境是一个单独的目录结构,包含独立安装,具有 Python 解释器、标准库和其他模块的本地副本。

下图展示了使用虚拟环境的优势目的。使用全局Python安装,会创建多个虚拟环境,每个虚拟环境都具有同一库的不同版本,从而避免了冲突。

python虚拟环境

标准 Python 发行版中的venv模块支持此功能。使用以下命令创建新的虚拟环境。

C:\Users\Acer>md\pythonapp
C:\Users\Acer>cd\pythonapp
C:\pythonapp>python -m venv myvenv

这里,myvenv是一个文件夹,将在其中创建一个新的 Python 虚拟环境,显示以下目录结构 -

Directory of C:\pythonapp\myvenv
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 <DIR> Include
22-02-2023 09:53 <DIR> Lib
22-02-2023 09:53 77 pyvenv.cfg
22-02-2023 09:53 <DIR> Scripts

用于激活和停用虚拟环境的实用程序以及 Python 解释器的本地副本将放置在脚本文件夹中。

Directory of C:\pythonapp\myvenv\scripts
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 2,063 activate
22-02-2023 09:53 992 activate.bat
22-02-2023 09:53 19,611 Activate.ps1
22-02-2023 09:53 393 deactivate.bat
22-02-2023 09:53 106,349 pip.exe
22-02-2023 09:53 106,349 pip3.10.exe
22-02-2023 09:53 106,349 pip3.exe
22-02-2023 09:53 242,408 python.exe
22-02-2023 09:53 232,688 pythonw.exe

要启用这个新的虚拟环境,请执行Scripts 文件夹中的activate.bat

C:\pythonapp>myvenv\scripts\activate
(myvenv) C:\pythonapp>

请注意括号中的虚拟环境的名称。Scripts 文件夹包含 Python 解释器的本地副本。您可以在此虚拟环境中启动 Python 会话。

要确认此 Python 会话是否在虚拟环境中,请检查sys.path

(myvenv) C:\pythonapp>python
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs',
'C:\\Python310\\lib', 'C:\\Python310', 'C:\\pythonapp\\myvenv',
'C:\\pythonapp\\myvenv\\lib\\site-packages']
>>>

该虚拟环境的脚本文件夹还包含 pip 实用程序。如果您从 PyPI 安装软件包,该软件包将仅在当前虚拟环境中处于活动状态。要停用此环境,请运行deactivate.bat